Как это сделать hide.php расширение в.htaccess [дубликат]
Возможный Дубликат:
Удалите расширение .php с помощью .htaccess
Я пытаюсь скрыть расширение файла .php, но по какой-то причине не могу заставить его работать. Моя последняя попытка была следующей:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^folder/([a-zA-Z_\-0-9]+)/?$ /folder/$1.php
</IfModule>
Я перепробовал множество различных вариантов кода, которые я нашел в Интернете, но все еще безуспешно. Файл .htaccess помещается в корневой каталог.
3 answers
Я использовал это:
RewriteEngine On
# Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ http://example.com/folder/$1 [R=301,L]
# Redirect external .php requests to extensionless url
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ http://example.com/folder/$1 [R=301,L]
# Resolve .php file for extensionless php urls
RewriteRule ^([^/.]+)$ $1.php [L]
См. также: этот вопрос
Другим вариантом использования PHP-скриптов без расширения является
Options +MultiViews
Или даже просто следуя в каталогах .htaccess
:
DefaultType application/x-httpd-php
Последнее позволяет обрабатывать все имена файлов без расширения script
как PHP-скрипты. В то время как мультивидения заставляют веб-сервер искать альтернативы, когда предоставляется только базовое имя (однако это снижает производительность).
1) Вы уверены, что модуль mod_rewrite включен? Проверить phpinfo()
2) Ваше вышеупомянутое правило предполагает, что URL-адрес начинается с "папки". Правильно ли это? Вы действительно хотели, чтобы в URL-адресе была папка? Это будет соответствовать URL-адресу, например:
/folder/thing -> /folder/thing.php
Если вы действительно хотите
/thing -> /folder/thing.php
Вам нужно удалить папку из выражения соответствия.
Я обычно использую это для маршрутизации запроса на страницу без php (но ваш должен работать, что наводит меня на мысль, что mod_rewrite может быть не включено):
RewriteRule ^([^/\.]+)/?$ $1.php [L,QSA]
3) Предполагая, что вы объявляете свои правила в файле.htaccess, позволяет ли ваша установка переопределять параметры настройки (AllowOverride) в файлах.htaccess? Некоторые общие хосты этого не делают.
Когда сервер находит файл .htaccess (как указано Имя файла доступа) ему необходимо знать, какие директивы, объявленные в этом файле, могут переопределять более раннюю информацию о доступе.