Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 209, средняя оценка - 4.95
Henior
56 / 73 / 15
Регистрация: 24.11.2010
Сообщений: 493
Записей в блоге: 14
#1

Убрать расширение php в адресной строке - PHP

09.08.2012, 23:58. Просмотров 34672. Ответов 35
Метки нет (Все метки)

Всем привет! Прочитал, что это можно сделать при помощи файла .htaccess. Создал файл в корневом каталоге сайта, т.е. там где лежат все файлы и папки директория www и прописал туда следующее:

PHP
1
2
3
4
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Но ожидаемого результата это не принесло, все равно выводится название страницы с расширением php. Кто сталкивался с подобной проблемой и какие пути ее решения? Спасибо!
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2012, 23:58
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Убрать расширение php в адресной строке (PHP):

Как убрать расширение картинки в адресной строке?
Всем доброго времени суток! Подскажите, как из вида ?pic=3.jpg сделать ?pic=3...

Как убрать GET параметры в адресной строке
Здравствуйте! Возможно преобразовать ссылку test1.ru/index.php?page=1 в ...

Убрать расширение .php в .htaccess
Здравствуйте! Я понимаю, что данная тема давно заезженная. Но все же, актуальна...

Убрать точку и расширение php в переменной
Может запутанно написал тему, извините, вопрос: Есть к примеру код: ...

Заставить php сценарий "понимать" html сущность амперсанда в адресной строке
Вот пример некоторой URL моего веб-сайта: ...

Как сделать, чтобы в адресной строке не отображалось расширение php?
как сделать чтоб не высвечивалась приставка php? и заходить что б можно было

35
dunmaksim
1 / 1 / 5
Регистрация: 24.04.2013
Сообщений: 45
18.09.2013, 09:28 #21
В Ваших логах написано, что превышена максимально допустимая глубина рекурсии, т.е. скрипт обращается сам к себе и ест память в огромных количествах. Используйте один из опубликованных выше конфигов .htaccess или вот этот, если Вы хотите, чтобы Ваш сайт работал через фронт-контроллер.
PHP
1
2
3
4
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} !-d
RewriteRule . /index.php [L]
0
DIZA777
0 / 0 / 0
Регистрация: 17.09.2013
Сообщений: 7
19.09.2013, 12:10 #22
Ничего не помогает, если не трудно, помогите. Самое примитивное: есть ссылка mysite/?view=contacts, надо mysite/contacts. B .htaccess уже есть правила
PHP
1
2
3
4
5
6
7
8
9
php_flag magic_quotes_gpc OFF
 
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php 
RewriteRule ^index.php$ / [QSA,R]
Но при добавлении правила
PHP
1
RewriteRule ^([^/]*)$ /?view=$1 [L]
все ломается (500 ошибка, зацикливание, ни одна страница не отображается), а в логах - постоянно меняется referer (смотря какая последняя страница была просмотрена перед добавлением этого правила).
Помогите
0
Loompy
22 / 15 / 3
Регистрация: 05.11.2013
Сообщений: 380
08.02.2015, 17:54 #23
Вот покороче:

PHP
1
2
RewriteEngine On
RewriteRule ^(\w+)$ $1.php [NC]
0
root
Заблокирован
08.02.2015, 18:15 #24
Цитата Сообщение от Loompy Посмотреть сообщение
Вот покороче:
интересно, как это будет себя вести при ссылке на картинку или на файл для скачивания?
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 16:19 #25
Здравствуйте!
Подскажите, пожалуйста, как сделать следующее:
Цель такая же как в теме - убрать расширение php в ссылках при помощи htaccess.
В принципе, у меня работает вот это:
PHP
1
2
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
Но проблема заключается в том, что у некоторых файлов php название совпадает с папкой.
Пример:
/category.php
/category/
/category/page1.php
Для таких страниц (если название совпадает с папкой) открывается директория со списком файлов в ней, ну или 403 ошибка, т.к. я закрыла просмотр папок.
Пробовала по разному, но как не кручу, не работает...
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
12.06.2015, 16:22 #26
самое простое - переименовать директорию, чтобы не было совпадений
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 16:31 #27
Понимаю, но тогда не будет логичного пути. Т.е. человек перешел по ссылке категории "category/" а в ней ссылки на материалы по этой категории "/category/page1". Добавлять какую-то цифру или букву - это, на мой взгляд, уже не так красиво и совсем не логично выглядит.
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
12.06.2015, 16:32 #28
Я имел в виду переименовать не ссылки, а именно саму директорию, чтобы не было такой директории.
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 16:35 #29
А потом делать подмену названия директории в htaccess?
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
12.06.2015, 16:36 #30
Зачем вам делать подмену?
Я вообще не знаю, зачем вам там директория category ? У вас что, URL совпадает с реальной структурой сайта? Делайте через единую точку входа и все
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 16:39 #31
Да, совпадает =) Это плохо? К сожалению, я не знаю как делать по-другому и что такое единая точка входа...
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
12.06.2015, 16:41 #32
http://www.cyberforum.ru/apache/thread652774.html
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 19:53 #33
Спасибо! Буду пробовать.

Добавлено через 3 часа 5 минут
Помогите, пожалуйста, еще разобраться.
Я переименовала директории, теперь у меня так:
/category.php
/dir-category/
В htaccess так:
PHP
1
2
3
4
5
6
7
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [N]
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/(.*)/?$ dir-$1/$2
Это работает для ссылок вида /category/page

Но для более глубокой вложенности, как я понимаю, надо другое правило.
Попробовала вот так добавить строкой ниже:
PHP
1
RewriteRule ^(.*)/(.*)/(.*)/?$ dir-$1/dir-$2/$3
Чтобы работали ссылки вида: /category/subcategory/page.
Но такие ссылки выдают ошибку 403, а ссылки /category/page стали выдавать ошибку: "[an error occurred while processing this directive]"

Подскажите, пожалуйста, что я не правильно делаю?
0
KOPOJI
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16744 / 6635 / 860
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
12.06.2015, 20:15 #34
вы что-то мудрите вообще.
Код
RewriteRule ^(.*)/?$ dir-$1
И все, не надо никаких (.*)/(.*)/(.*)/(.*)/...
0
sonrisa
0 / 0 / 0
Регистрация: 12.06.2015
Сообщений: 6
12.06.2015, 20:35 #35
Спасибо вам за ответ!
Оставила вот так:
PHP
1
2
3
4
5
6
7
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/?$ dir-$1
Но при запросе ссылки /category/subcategory/page - ошибка 500.
При /category/page - работает.
0
Dungan4ik
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 1
23.07.2015, 21:39 #36
Всем привет! Нужна помощь с htaccess.
Убрал .php из адресной строки, через htaccess, вот код:
PHP
1
2
3
4
5
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)/?$ $1.php
RewriteRule ^(.*)/([a-z_]+)/?$  $1.php
Сайт работает, но не выдает 404 ошибку. Выдает 500 ошибку.
PHP
1
ErrorDocument 404 /err404.html
В файле html указал путь так:
HTML5
1
2
3
<li class="current menu"><a href="uslugi-kompanii">Услуги</a></li>
<li class="current menu"><a href="novosti-kompanii">Новости</a></li>
<li class="current menu"><a href="kontakty">Контакты</a></li>
Может где, то не правильно сделал, помогите найти ошибку.
0
23.07.2015, 21:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2015, 21:39
Привет! Вот еще темы с решениями:

Как скрыть данные в адресной строке после "example.com/file.php?."
Как скрыть данные после вопросительного знака? Пример...

Как, использующие php, сайты имеют расширение страниц html, но не php?
Сабж. Собственно говоря, сайты наверняка построены с использованием PHP, но при...

Запросы GET в адресной строке
Подскажите, у меня например есть папки(категории) в них страницы. у меня...

Работа с GET в адресной строке
Наверное глупый вопрос для многих тут, но я не смог придумать правильную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru