Перепишите условие, чтобы проверить, если не два URL - PullRequest
1 голос
/ 23 марта 2012

Я принудительно меняю URL, если пользователь зашел на сайт через http://mysite или http://www.mysite

Однако в настоящее время я проверяю, что сайт не соответствует основному субдоменуhttp://store

У меня также есть другой поддомен, но он также перезаписывается, поэтому мне нужно изменить способ работы моего текущего кода:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^store\.mysite\.com [NC]
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L]

Iпредпочел бы, чтобы он проверял, является ли URL-адрес одним из следующих:

http://mysite.com
http://www.mysite.com

... и затем применяет правило перезаписи, как я могу изменить свое условие перезаписи, чтобы сделать это?

Ответы [ 2 ]

4 голосов
/ 23 марта 2012

Попробуйте это - работает отлично здесь:

RewriteCond %{HTTP_HOST} ^(mysite\.com|www\.mysite\.com)$ [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]
  • Здесь я поместил 2 доменных имени в одно условие, используя шаблон регулярных выражений.
  • Я также немного изменил RewriteRule (именно так я и предпочел это сделать).
  • Вы также можете добавить сюда флаг QSA, так как это перенаправление 301 (зависит от ваших реальных URL) - [R=301,QSA,L].

Другие подходы:

1) Отдельное условие для каждого доменного имени (необходимо указать, что логика OR должна использоваться вместо значения по умолчанию AND):

RewriteCond %{HTTP_HOST} ^mysite\.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www\.mysite\.com$ [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]

2) То же, что и выше ... но вместо сравнения с регулярным выражением используется сравнение в обычном тексте:

RewriteCond %{HTTP_HOST} =mysite.com [NC,OR]
RewriteCond %{HTTP_HOST} =www.mysite.com [NC]
RewriteRule .* http://store.mysite.com%{REQUEST_URI} [R=301,L]
1 голос
/ 23 марта 2012

Пока я сделал это:

RewriteCond %{HTTP_HOST} mysite\.com [NC]
RewriteCond %{HTTP_HOST} www\.mysite\.com [NC]
RewriteRule (.*) http://store.mysite.com/$1 [R=301,L]

Можно ли сделать какие-либо улучшения в этом случае?

На самом деле первый RewriteCond не обнаруживает http://mysite.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...