2013-09-18 5 views
1

Я хочу, чтобы этот URL:RewriteCond исключить путь не работает

http://www.example.com/path/antyhing 

НЕ перенаправлены.

Вот что у меня есть, не работает:

RewriteCond %{REQUEST_URI} !^/path/.*$ [NC] 
RewriteRule^http://m.example.com/ [R,L] 

В настоящее время он перенаправляет все URL, чтобы http://m.example.com/

Вот полный код в моем файле .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}] 

# Skip next rule if mobile=0 
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|ipad|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(;|$) 
# Don't redirect "path" pages 
RewriteCond %{REQUEST_URI} !^.+?/path/.*$ [NC] 
# Now redirect to the mobile site 
RewriteRule^http://m.example.com/ [R,L] 
+0

Он должен работать, но вы можете иметь другие правила, противоречащие это правило. Можете ли вы опубликовать свой текущий код из .htaccess? – anubhava

+0

@anubhava спасибо, я добавил полный код. – Community

+0

Он выглядит хорошо. Можете ли вы попробовать: «RewriteCond% {REQUEST_URI}! ^/Path/[NC]' (я считаю, что «путь» нужно изменить с фактическим именем страницы) – anubhava

ответ

3

Может вы заменяете свое последнее правило следующим:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

# 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}] 

# Skip next rule if mobile=0 [OR] if it's a file [OR] if /path/ 
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$) [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_URI} ^.*/path/.*$ 
RewriteRule^- [S=1] 

# Check if this looks like a mobile device 
RewriteCond %{HTTP_PROFILE}  !^$ [OR] 
RewriteCond %{HTTP_X_WAP_PROFILE} !^$ [OR] 
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|ipad|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC] 
# 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(;|$) 
# Don't redirect "path" pages 
RewriteCond %{REQUEST_URI} !^.*/path/.*$ [NC] 
# Now redirect to the mobile site 
RewriteRule^http://m.example.com/ [R,L,NC] 

Редактируйте OP: Единственная проблема доносилась из %{REQUEST_URI}, что по причине, что я не понимаю, работает только против ^.*/path/.*$

+0

Спасибо за ваш ответ, я просто сделал это, но он все еще перенаправляет все страницы :(Что может быть неправильным? – Community

+0

Его действительно странно, поскольку все это отлично работает на моем Apache – anubhava

+0

Это действительно супер странно. Испытали ли вы весь мой код, и он работает для вас? Если да, то что может быть неправильно в моей стороне? У меня нет другого файла '.htaccess', не может ли он быть кешированием браузера? Я пытаюсь выслушать и решить этот вопрос сегодня ... Отчаяние, потратив 3 часа на попытку любой возможной комбинации! – Community

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