Mod_rewrite вызывает ошибку 404 - PullRequest
1 голос
/ 07 июня 2010

Это файлы .htaccess с двух моих локальных сайтов.

Виртуальный хост 1 (mysite1.com):

    # this is the initialization
Options         +FollowSymLinks
RewriteEngine On # Turn on the rewriting engine 
RewriteRule ^news-07/?$ news_01_06_2007.php [NC,L] 
# Handle requests for "news"
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)\.php$ $1 [nc]
#RewriteRule ^(.*)\.php$ http://mysite1.com/$1 [R,NC]

Однако, когда я пытаюсь http://www.mysite1.com/testfile.php - он перенаправляет на http://mysite.com/testfile, как и должен, за исключением того, что отображается это сообщение:

Не найдено
Запрошенный URL / тестовый файл не найден на этом сервере.

Как я могу разрешить это сообщение об ошибке и убедиться, что мой файл .htaccess работает?

Мне удается хорошо понять .htaccess относительно таких вещей, как блокировка пауков и т. Д., Но этовызывает у меня некоторые проблемы, кто-нибудь знает, что не так и как я могу предотвратить повторение этой ошибки в будущем?

Вся помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Включите MultiViews с

Options +MultiViews

Это будет работать не только с .php-файлами, но и со всеми файлами, которые клиент утверждает, что принимает в запросе. Смотрите здесь . Обратите внимание, что неправильно работающие конфигурации в Apache в прошлом называли MultiViews недопустимым именем, см. здесь , чтобы убедиться, что Apache правильно настроен.

Если вы хотите использовать правила перезаписи, я бы сделал это (не проверено):

RewriteCond $0 !\.[a-zA-Z0-9]+$
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$  $0.php [QSA]

Флаг QSA необходим для того, чтобы вы не потеряли строку запроса

0 голосов
/ 07 июня 2010

Я думаю, вы можете попытаться сделать это задом наперед. Попробуйте что-то вроде этого:

RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$  $1.php  [nc]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...