2012-01-17 3 views
1

Я создал страницу, на которую каждый новый пользователь перенаправляется при посещении, он устанавливает cookie, который позволяет получить доступ ко всей остальной части моего сайта. Я хочу, чтобы добавить исключение из этого правила для некоторых сайтов и их ботов:Исключения правила в mod_rewrite

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteCond %{HTTP_REFERER} http://www.site1.com [NC,OR] 
RewriteCond %{HTTP_REFERER} http://www.site2.net [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} bot1 [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} bot2 [NC] 
RewriteRule .? - [S=1] 
RewriteCond %{HTTP_COOKIE} !yes=1 [NC] 
RewriteRule !^(script1.php|script2.php)$ script2.php [L] 
</IfModule> 

Как вы можете видеть, если куки не существует или = 1 каждый пользователь перенаправляется на script2.php.

Я написал несколько исключений, но иногда это работает, а иногда и нет.

Я где-то ошибся, но я этого не вижу.

Можете ли вы мне помочь? Благодарю вас за время.

+1

Я предпочел бы использовать [L] вместо [S = 1]. Во-вторых, я бы сделал внешнее перенаправление на script2.php, поэтому он не кэшируется (неправильно). Поэтому используйте [R, L], а не только [L] в своем последнем правиле. – Gerben

+0

@ Gerben: Я выполнил ваши инструкции, и теперь он отлично работает. Не могли бы вы опубликовать его в качестве ответа, чтобы я мог его принять? Благодаря! – w3b4

ответ

1

Я предпочел бы использовать [L] вместо [S=1].

Во-вторых, я бы сделал внешнее перенаправление на script2.php, поэтому он не кэшируется (неправильно). Поэтому используйте [R,L] вместо [L] по вашему последнему правилу.

Смежные вопросы