htaccess / mod_rewrite проблемы с возможными подкаталогами - PullRequest
0 голосов
/ 13 августа 2010

Я работаю в очень динамичной системе, где у меня есть два идентичных файла htaccess в / и в / somepath.Причина в том, что домен может быть указан в / somepath, но я никогда не знаю, так ли это.

Когда он указывает на / somepath, проблем нет, но когда его нет, кажется, что когда я запрашиваю / somepath / page / foo / bar, файл htaccess в / somepath переопределяет файл в /.В последнем случае я не хочу, чтобы /somepath/.htaccess вообще работал, или, по крайней мере, не обращал внимания на mod_rewrite в нем.

Одним из решений было бы, если бы я мог проверить, не находится ли последний htaccess вкорень документа.Это возможно?Как сравнить путь htaccess с корневым каталогом документа из файла htacces?

Оба файла htaccess выглядят так:

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} \.php$
RewriteRule .* uri_handler.php [L]
</IfModule>

Кто-нибудь знает, что здесь происходит?Спасибо!

Ответы [ 2 ]

0 голосов
/ 13 августа 2010

За исключением любых попыток упростить настройку, я думаю, что самый простой подход здесь - просто убедиться, что файл .htaccess в /somepath не обрабатывает запросы к /somepath, когда корнем документа является /.

Предполагая, что мы все на одной странице с корнем документа, мы можем сделать это, изменив /somepath/.htaccess:

Редактировать: Более простой способ состоит в том, чтобыпросто всегда запрашивайте uri_handler.php, который живет в корне:

<IfModule mod_rewrite.c>
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-f [OR]
  RewriteCond %{REQUEST_FILENAME} \.php$
  RewriteRule .* /uri_handler.php [L]
</IfModule>
0 голосов
/ 13 августа 2010

Я не думаю, что это возможно. Но это звучит как ошибка строительства в любом случае. Было бы намного лучше объединить два файла .htaccess в один. (Или второй в /somepath вообще необходим? Зачем?)

При каких обстоятельствах домен запроса указывает на /somepath? Это другой домен, который вы могли бы использовать в собственном RewriteCond?

...