Включить DirectorySlash без отображения запроса

#apache #.htaccess

#apache #.htaccess

Вопрос:

Если у меня есть этот код в моем .htaccess в корне моего сайта:

 RewriteCond %{REQUEST_URI} ^/foo/bar/
RewriteRule ^foo/bar(.*)$ http://example.org/foo/?file=$1 [P,QSA]
  

И иметь такую файловую структуру:

 foo
  -- index.php
  -- bar
       -- qaz
            -- file.txt
  

И я запрашиваю страницу, на которую http://example.org/foo/bar/qaz/ она будет перенаправляться на сервере http://example.org/foo/?file=/qaz/ .
Однако, если я запрошу страницу, http://example.org/foo/bar/qaz она будет перенаправлена на http://example.org/foo/?file=/qaz , однако она будет отображаться http://example.org/foo/bar/qaz/?file=/qaz в браузере.

Как мне включить DirectorySlash, но при этом скрыть запрос от пользователя?

Ответ №1:

DirectorySlash выполняет это, только если существует каталог ‘/foo/bar/qaz’.

DirectorySlash не учитывает базу перезаписи. Вы могли бы отключить это и сделать это самостоятельно с помощью этого:

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