Переписать правило, чтобы перенаправить весь сайт, кроме одного маршрута - PullRequest
4 голосов
/ 13 декабря 2011

Я перевожу веб-сайт, скажем, с example.com на yyy.com.

Но example.com/a, и все, как example.com/a/*, должно остаться на example.com.

Но есть кое-что еще: у меня есть маршруты, называемые чем-то вроде example.com/a-b/*, и они должны быть перенаправлены на yyy.com/a-b/* (как и остальная часть сайта).

Я могу правильно настроить сайтперенаправить все, кроме example.com/a*, но это означает, что example.com/a-b не перенаправлен ...

Я пытался написать следующие правила в моем .htaccess, напрасно:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} !^a$
RewriteCond %{REQUEST_URI} !^a\/.*$
RewriteRule ^(.*)$ http://www.yyy.com/$1 [R=301,L]

иличётное:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} ^a-b
RewriteRule ^(.*)$ http://www.yyy.com/$1 [R=301,L]

RewriteCond %{REQUEST_URI} !^a
RewriteRule ^(.*)$ http://www.yyy.com/$1 [R=301,L]

(изменение имени моего маршрута не вариант)

1 Ответ

0 голосов
/ 13 декабря 2011

Попробуйте следующее в вашем .htaccess файле

RewriteEngine On
RewriteBase /

#if it starts with routes a-b then send to yyy
RewriteCond %{REQUEST_URI} ^/(a-b/.*)$ [NC]
RewriteRule . http://www.yyy.com/%1 [R=301,L]

#if it does not start with an a, then also send to new site
RewriteCond %{REQUEST_URI} !^/a [NC]
RewriteRule (.*) http://www.yyy.com/$1 [R=301,L]
...