Регулярное выражение в редиректе

O
На сайте с 29.05.2008
Offline
195
759

Здравствуйте.

Есть регулярное выражение:

<IfModule rewrite_module>

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} =/index.php [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-F
RewriteRule ^(.*) /index.php
</IfModule>

Нужно дополнительно отсеивать директорию /images и файл favicon.ico.

siv1987
На сайте с 02.04.2009
Offline
427
#1

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/images/

RewriteCond %{REQUEST_URI} !^/favicon.ico

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-F

RewriteRule ^(.*) /index.php [L]

%{DOCUMENT_ROOT}%{REQUEST_FILENAME} - а REQUEST_FILENAME разве не содержит полный путь к файлу?

O
На сайте с 29.05.2008
Offline
195
#2

siv1987,

Почему не пишется [AND]?

Почему !^, а не !=?

Можно ли ставить пробел после !=?

siv1987
На сайте с 02.04.2009
Offline
427
#3

Потому что по умолчанию AND.

!= - строковое сравнение без регулярного выражение. А регулярные выражения как известно, ищут подстроку в строке. Очевидно в случае исключения целого каталога сравнение не подходит. Для favicon.ico можно !=/favicon.ico

Нельзя. Если он входит в состав выражения тогда пробел нужно экранировать \

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий