Конфигурация htaccess, чтобы пропустить правило - PullRequest
0 голосов
/ 21 февраля 2012

Я настроил свой htaccess для проверки и перенаправления мобильных устройств в определенную сеть.Но я бы хотел пропустить это правило, если REQUEST_URI имеет значение / page / ... (URL-адрес блога)

У меня есть такой .htaccess, как этот

RewriteBase /
RewriteEngine On

# Check if mobile=1 is set and set cookie 'mobile' equal to 1
RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
RewriteRule ^ - [CO=mobile:1:%{HTTP_HOST}]

# Check if mobile=0 is set and set cookie 'mobile' equal to 0
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [CO=mobile:0:%{HTTP_HOST}]

# cookie can't be set and read in the same request so check
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [S=1]

# Check if this looks like a mobile device
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR]
RewriteCond %{HTTP:Profile}       !^$

# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)
# Now redirect to the mobile siteRewriteCond with this conditions  
RewriteCond %{REQUEST_URI} !^/prototypes/.* 
--> RewriteCond %{REQUEST_URI} !^/blog/.*  
--> RewriteCond %{REQUEST_URI} !^/page/.*
RewriteRule ^ http://www.applified.nl/m/web%{REQUEST_URI} [L,R]

RewriteRule ^page/([^/\.]+)/?$ ?page=$1
RewriteRule ^blog/([^/\.]+)/?$ ?page=Blog&entry=$1   [NC]
RewriteRule ^page/Blog/offset/(.+)/?$ ?page=Blog&offset=$1   [NC]

Я пробую несколько способов, но яне достичь решения

Приветствия

1 Ответ

1 голос
/ 21 февраля 2012

Добавьте эту строку перед RewriteRule :

RewriteCond %{REQUEST_URI} !^/page/

С RewriteCond выбранный вами CondPatern может быть несоответствующим шаблоном, если используется префикс !. Тогда, если RewriteCond ложно, RewriteRule, который следует, не будет использоваться.

Об ассоциации между несколькими RewriteCond, каждое условие должно быть выполнено, поэтому следует использовать RewriteRule, который следует (таким образом, это похоже на AND между каждым RewriteCond, но вы можете изменить это поведение с помощью флага [OR] в конец RewriteCond). Так что здесь вы можете просто добавить строку, и она должна работать из коробки.

...