2016-01-03 7 views
2

На моем WebServer У меня есть файл .htaccess, который выглядит следующим образом:Htaccess не работает должным образом

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^?]*)$ /index.php?path=$1 [NC,L,QSA] 

Таким образом, все звонки на мой WebServer перенаправляются в файл index.php в моем корневом каталоге с параметром пути который содержит запрошенный файл. Теперь просмотрите эти два вызова:

domain.com/test/blub.php  works -> path = test/blub.php 
domain.com/test/    does not work -> path should be test 

Как я могу достичь второго вызова, также работает?

ответ

2

Удалить это условие из данного правила:

RewriteCond %{REQUEST_FILENAME} !-d 

Поскольку это пропускает все реальные каталоги из этого правила.

Используйте правило как:

DirectorySlash Off 
RewriteEngine on 

RewriteCond %{DOCUMENT_ROOT}/$1 -d 
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,NE] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.*)/?$ /index.php?path=$1 [NC,L,QSA] 
+0

Благодарим Вас за это. Работает очень хорошо. Но теперь параметр пути отображается в URL-адресе. Могу ли я отключить его? – Cilenco

+0

Теперь, если я вызываю domain.com/test, он не перенаправляется в файл index.php – Cilenco

+0

Прошу прощения, что вы правы. У меня была ошибка в моем скрипте PHP:/извините за это. – Cilenco

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