2015-06-29 3 views
1

У меня есть следующий файл .htaccess. Он отказывается открыть следующую структуру URL:Простой .htaccess правило перезаписи не работает

www.example.com/test

Несмотря на то, что доступ к этому штраф:

www.example.com/test.php

Я использовал несколько более сложных правил перезаписи, используя этот файл, и он работал нормально. Например:

RewriteRule^тесты/([0-9] +)/$ /tests_page.php?id=$1 [PT, L, QSA]

Я не понимаю как это может происходить. Что мне здесь не хватает?

#OPTIONS 
Options -Indexes 
Options +FollowSymLinks 

#ACCESS TO THE .HTACCESS FILE 
<Files .htaccess> 
order allow,deny 
deny from all 
</Files> 

#REWRITE ENGINE 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteEngine On 

#PAGES REWRITE 
RewriteRule ^test/?$ /test.php 

Update:

я переименовал файл tests.php и изменил правила к этому, и это сработало:

RewriteRule^тест/$ /tests.php

Это все еще не объясняет, почему это происходит, хотя.

Почему я не могу указать имя папки url для имени файла?

+0

У вас есть каталог под названием «тест»? что происходит при попытке доступа/тестирования? – nomve

+0

@nomve нет папки под названием /test/.....I получить это сообщение: не найдено Запрашиваемый URL/тест не найден на этом сервере. Apache/2.2.22 (Debian) –

+0

Проблема, как правило, я знаю некоторые вещи, которые я могу проверить. Некоторая часть кода, которую я могу удалить или что-то еще. С этим я в тупике. –

ответ

2

Эта проблема возникает с опцией MultiViews. Отключите его, используя:

Options -MultiViews 

линия вверху вашего .htaccess. Опция MultiViews используется Apache's content negotiation module, которая работает до модуля mod_rewrite и позволяет серверу Apache сопоставлять расширения файлов. Таким образом, /file может быть в URI, но он будет служить /file.php.

Смежные вопросы