mod_rewrite не работает в верхнем каталоге, но нормально работает в подкаталогах - PullRequest
0 голосов
/ 22 августа 2010

Я использовал mod_rewrite (экономно) в нескольких каталогах раньше без проблем, поместив файл .htaccess для этого каталога, и теперь он работает там. Но когда я пытаюсь использовать его в своем каталоге верхнего уровня, ничего не происходит!?!?! Но этот файл .htaccess (верхнего уровня один) работает нормально в противном случае. У меня есть Redirect 301 и множество других вещей, но не включен mod_rewrite. Я использую Apache 2.0.63 с загруженными mod_rewrite и mod_proxy.

В качестве тестового примера я настроил следующие 4 файла (fileA, html, fileB.html, fileC.html, fileD.html) и поместил их в каталог / test. Каждый файл содержит соответствующие буквы (например, AAAA, BBBB), поэтому я могу их точно идентифицировать. В каталоге / test я создал файл .htaccess с

Redirect 301 /test/fileA.html http://www.xyz.com/test/fileB.html
RewriteEngine on
RewriteRule ^fileC\.html$ fileD.html

и все работает должным образом: вы можете видеть только fileB.html и fileD.html даже при запросе A или C.

Затем я скопировал эти файлы в корневой каталог html и добавил туда .htaccess:

Options +FollowSymLinks (this was already there)
Redirect 301 /fileA.html http://www.xyz.com/fileB.html
RewriteEngine on
RewriteRule ^fileC\.html$ fileD.html

В .htaccess других команд об этих файлах нет. Теперь вы можете видеть fileB.html и fileD.html, но также fileC.html, а не fileA.html !!! Таким образом, правило mod_rewrite НЕ РАБОТАЕТ, а Перенаправление работает.

Я напрасно искал в сети идеи для этого. Кто-нибудь знает, что я делаю не так?

1 Ответ

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

Похоже, что проблема, по крайней мере, в моем тестовом примере, была как-то еще ниже в файле .htaccess, в котором у меня был RewriteEngine на RewriteCond% {HTTP_USER_AGENT}! FeedBurner, за которым следовали некоторые RewriteRules, которые я действительно хотел, и отключенный RewriteEngineпоследнее - мои ошибочные (?) попытки очистить RewriteCond, чтобы не повлиять на возможные будущие RewriteRules.Кроме того, я вижу, что у меня изначально была проблема с некоторыми из них в том, что я включил в сопоставление с образцом начальную букву "/", что, по-видимому, неверно.

Я прокомментировал все это, и мой тестовый пример и то, что яочень хотел, начал работать как положено.Игра с тех пор заставляет меня поверить, что RewriteEngine off был настоящим преступником.Во всяком случае, теперь все работает, как ожидалось.Спасибо, что подтолкнул меня в правильном направлении, и, надеюсь, это поможет кому-то еще.

...