2015-06-16 2 views
1

Я действительно пробовал все, инструмент htaccess tester говорит, что все в порядке, но это не работает.Htaccess regex: exclude REQUEST_URI

Я хочу перенаправить субдомен в основной домен, только если REQUEST_URI не начинается с 3 определенных строк.

Я пытался без успеха:

RewriteCond %{HTTP_HOST} ^sub.example.com$ [NC] 
RewriteCond %{REQUEST_URI} !(aaa|bbb|ccc) 
RewriteCond %{REQUEST_URI} !^/?$ 
RewriteRule ^(.*)$ http://www.example.com%{REQUEST_URI} [R=301,NC,L,QSA] 

Я хочу, чтобы:

  • http://sub.example.com (не следует перенаправить) ->http://sub.example.com | OK
  • http://sub.example.com/aaa/sss (не следует перенаправить) ->http://sub.example.com/aaa/sss | KO (перенаправление на http://www...)
  • http://sub.example.com/zzz/xxx (следует перенаправить) ->http://www.example.com/zzz/xxx | OK

Благодаря

+0

Что происходит, чего вы не хотите? – Anonymous

+0

перенаправляет второй на http: // www.example.com/aaa/sss. –

+0

Возможно, вы захотите добавить это к своему вопросу, а конкретные строки - это все буквы или они включают символы? – Anonymous

ответ

2

Попробуйте это правило вместо:

RewriteCond %{HTTP_HOST} ^sub\.example\.com$ [NC] 
RewriteCond %{THE_REQUEST} !\s/+(aaa|bbb|ccc)/ [NC] 
RewriteRule . http://www.example.com%{REQUEST_URI} [R=301,L,NE] 

Test это после того, как очистить кэш браузера.

THE_REQUEST вместо REQUEST_URI, чтобы использовать неизменные значения URI, полученные Apache.

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