Как скрыть расширение .php в .htaccess

Возможный дубликат:
Удалите расширение .php с .htaccess

Я пытаюсь скрыть расширение файла .php, но по какой-то причине не могу заставить его работать. Моя последняя попытка заключалась в следующем:

<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^folder/([a-zA-Z_\-0-9]+)/?$ /folder/$1.php </IfModule> 

Я пробовал много разных вариантов кода, который я нашел в Интернете, но все равно не повезло. Файл .htaccess помещается в корневой каталог.

Я использовал это:

 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. В то время как MultiViews позволяет веб-серверу искать альтернативы, когда предоставляется только базовое имя (однако это связано с производительностью).

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 (как определено AccessFileName), ему нужно знать, какие директивы, объявленные в этом файле, могут переопределять информацию о более раннем доступе.