2012-03-23 6 views
1

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

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

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

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

Я предпочел бы, чтобы это проверить, URL либо из них:

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

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

ответ

4

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

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

До сих пор я сделал это:

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

+0

Ваше текущее правило не имеет для меня никакого смысла - это говорит: если доменное имя содержит 'mysite.com', то и то же, что и' www.mysite.com', затем перенаправляет. Первое условие (то, как вы их написали) должно охватывать второе. – LazyOne

+0

Первый способ, которым я написал их в вопросе, изменяет все поддомены на 'store.mysite.com'. Мне также нужна возможность иметь другие поддомены, но меняйте только 'http: // www.mysite' и' http: // mysite' на использование поддомена 'store.' – diggersworld

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