Файл .htaccess не работает, как запланировано - PullRequest
1 голос
/ 06 октября 2009

ОК, значит, мы работали не в том каталоге, ме!

У нас есть файл .htaccess , который настроен для перенаправления некоторых файлов в скрипт php. Теперь мы добавляем несколько жестких файлов, которые мы хотим обойти с помощью перенаправления. Пока что это не работает, и мы в замешательстве.

Ниже приведено исходное содержимое файла .htaccess после запуска движка, который уже работает для другого приложения:

RewriteCond $ 1! ^ (Index.php | robots.txt | favicon.ico)

RewriteRule ^ (. *) $ /Index.php/$1 [L]

Сейчас мы пытаемся загрузить файлы из / directory / Итак, мы попытались добавить каждый из них в раздел RewriteCond:

RewriteCond% {REQUEST_URI}! Directory

RewriteCond $ 1! ^ (Index.php | i / | robots.txt | favicon.ico | каталог)

Кажется, ни один из них не работает. Любые идеи о том, как заставить это загрузить?

Примеры:

следует перенаправить

http://site.com/thisredirects/

Не следует перенаправлять

http://site.com/directory

http://site.com/directory/

http://site.com/directory/index.php

и т.д.

Ответы [ 3 ]

1 голос
/ 06 октября 2009

Попробуйте это:

Не будет перенаправлять

RewriteRule directory/.* - [L]

Перенаправление

RewriteRule ^$ thisredirects/ [L]
RewriteRule (.*) thisredirects/$1 [L]
0 голосов
/ 06 октября 2009

Кажется, вы хотите перенаправить все, что на самом деле не существует в вашем файле документации, в ваш index.php. Это немного переписать должно справиться с этим:

RewriteCond %{REQUEST_FILENAME} -s [OR]  # file with size
RewriteCond %{REQUEST_FILENAME} -l [OR]  # file is a link
RewriteCond %{REQUEST_FILENAME} -d       # file is a directory
RewriteRule ^.*$ - [NC,L]                # don't rewrite [last rule]
RewriteRule ^(.*)$ /index.php/$1 [NC,L]       # everything else gets sent to index.php

Оператор [OR] может быть тем, что вы ищете в RewriteCond.

Также, если вы просто хотите внести в белый список часть каталога /, вы можете поместить правило перед перенаправлениями, помеченное [L] для «последнего правила»

RewriteRule ^/directory.*$ - [NC,L]
0 голосов
/ 06 октября 2009

Вы пытались создать второй файл .htaccess в каталоге / каталог и выполнить в нем NoRewrite?

...