Использование RewriteRule приводит к невозможности чтения файла индекса - PullRequest
2 голосов
/ 04 октября 2011

Вот мои настройки: http://example.com/directory/

Я пытаюсь скрыть «каталог» при загрузке страниц в этой папке.Я обновляю свой файл .htaccess в корне html следующим образом:

Параметры + FollowSymLinksПереписатьEngine наКаталог RewriteCond% {REQUEST_URI}! (. )RewriteRule ^ (. ) $ directory / $ 1

Это прекрасно работает при загрузке файла в папке каталога, но index.html в корневой папке html не найден, если я не помещу его в папку каталога.Заранее благодарю за любую помощь.Я перебрал все вопросы и ответы по переписке на этом сайте!

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

dougajmcdonald объяснил достаточно, но я объясняю по-другому, так что щедрость его :-)

когда вы запрашиваете index.html файл, mod-rewrite проверяет ваше условие перезаписи:

RewriteCond %{REQUEST_URI} !(.)directory 

, потому что его URI запроса похож на /index.html и соответствует условию (ваше условие:URI запроса НЕ должен начинаться с /directory)Итак, mod_rewrite переписывает ваш URL на новый: directory/index.htmlэто равносильно запросу directory/index.html самостоятельно.по этой причине вы должны поместить этот файл в "directory" directory.

0 голосов
/ 04 октября 2011

Ваше правило переписывания для меня выглядит так, как будто вы принимаете запросы из корневого каталога и добавляете имя файла в / directory /. Это объясняет, почему файлы в корне напрямую не работают, если они также не присутствуют в папке / directory /.

...