2012-02-21 2 views
0

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

У меня есть .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] 

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

Приветствия

ответ

1

Добавить эту линию до RewriteRule:

RewriteCond %{REQUEST_URI} !^/page/ 

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

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

+0

Я пробовал этот способ, но не работает. Возможно, что конфигурация сервера Apache имеет конфликт с этим правилом (или write cond) или, возможно, с кэшем. (У меня нет доступа к конфигурации сервера) – pipo02mix

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