Динамически проверять каталог внутри подкаталога - PullRequest
0 голосов
/ 02 декабря 2010

У меня есть несколько доменов, которые указывают на один и тот же каталог "public_html" на моем хосте.
В основной папке находится файл .htaccess, который локально перенаправляет каждый домен в определенную папку с тем же именем, что и переменная %{HTTP_HOST} mod_rewrite. (например: перенаправить www.domain.com на public_html/www.domain.com/)

Это содержимое .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond /%{HTTP_HOST}/#%{REQUEST_URI} !^([^#]+)#\1
RewriteRule ^(.*)$ %{HTTP_HOST}/$1 [L]

У меня проблема с директивой Slash.
Если я пытаюсь получить доступ к папке в доменном URL без косой черты, например http://www.domain.com/folder, mod_dir применяет DirectorySlash и внешне перенаправляет мой запрос на http://www.domain.com/www.domain.com/folder/

Я попытался применить перенаправление 301 ПОСЛЕ перенаправления каталога домена следующим образом:

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

Но чтобы это работало, мне нужно было бы проверить, существует ли %{REQUEST_FILENAME} в папке %{HTTP_HOST}. Я даже попробовал следующее, но безуспешно:

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

Как я могу динамически проверить, является ли %{REQUEST_FILENAME} каталогом, который находится внутри каталога с тем же именем, что и %{HTTP_HOST}?

Заранее спасибо

1 Ответ

0 голосов
/ 13 декабря 2010

Если вы работаете с -d, вам необходимо указать абсолютный путь к файловой системе. Итак, попробуйте это:

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