Я использую файл .htaccess для направления запросов на каталог в пользовательский файл php, который предоставляет информацию об этом каталоге (и я хочу, чтобы отображаемый браузером URL не изменялся).
Вот соответствующая часть файла .htaccess.
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ /myphp.php?url=%{REQUEST_URI} [QSA,L]
Это хорошо работает, если вы идете в каталог и включаете косую черту:
http://domain.com/path/
Но без косой черты, это не
http://domain.com/path
URL (показанный в браузере) превращается в:
http://localhost:8888/path/?url=/path
Я попытался исправить это, добавив правило над этим правилом:
RewriteCond %{REQUEST_FILENAME} -D
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
Но это не работает для меня.
Как я могу получить .htaccess, чтобы добавить косую черту, если он опущен, и затем действовать так, как если бы он был там?
Спасибо
Обновление:
Как и просили, вот и все.
<IfModule mod_rewrite.c>
RewriteEngine On
#force trailing slashes on real directories
RewriteCond %{REQUEST_FILENAME} -D
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L]
#use the directory viewer on directories without an index page
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ /myphp.php?url=%{REQUEST_URI} [QSA,L]
</IfModule>