Удалите расширения файлов, используя htaccess в подкаталогах - PullRequest
1 голос
/ 07 февраля 2012

Я пытаюсь удалить расширения файлов с помощью htaccess, поэтому www.mysite.com/file.php становится www.mysite.com/file.

Я использую следующий код в файле .htaccess:

Options +FollowSymLinks
Options +Indexes
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Пока все хорошо.Где он падает, находится в подпапках: www.mysite.com / subfolder / file.php становится www.mysite.com / file .

Я пробовалзагрузка другого файла .htaccess в подпапку, но он все равно делает то же самое.Такое ощущение, что все должно быть очень просто, но я изо всех сил ... кто-нибудь может мне помочь?Спасибо!

Редактировать Извините, ребята, следовало бы сказать - файл находится в подпапке примерно так:

www.mysite.com/folder/subfolder/file.php

Файл .htaccessнаходится в /folder, URL изменяется в следующем формате:

www.mysite.com/subfolder/file

Извиняюсь за вводящее в заблуждение.

Ответы [ 3 ]

5 голосов
/ 07 февраля 2012

Это правило, которое вам нужно, чтобы скрыть расширение .php. Это входит в ваш .htaccess в каталоге DOCUMENT_ROOT:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

# To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
1 голос
/ 07 февраля 2012

Вы не должны использовать правила переписывания для этого. Apache имеет встроенную опцию для выполнения того, что вы пытаетесь сделать, под названием MultiViews , и это то, что вы должны использовать:

Эффект MultiViews заключается в следующем: если сервер получает запрос для / some / dir / foo, если / some / dir имеет включенные MultiViews и / some / dir / foo не существует, то сервер считывает директория ищет файлы с именем foo. * и эффективно подделывает карту типов, которая называет все эти файлы, присваивая им те же типы медиа и кодировки контента, которые были бы, если бы клиент запросил один из них по имени. Затем он выбирает лучшее соответствие требованиям клиента.

Просто добавьте Options MultiViews к вашему .htaccess и убедитесь, что AllowOverride правильно настроен.

0 голосов
/ 07 февраля 2012

Угадай в дикой природе Попробуйте

  RewriteRule ^(.+)$ $1.php [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...