2010-08-20 2 views
5

Мне нужно перенаправить из основного домена, например mydomain.com или www.mydomain.com, в sub.mydomain.com - и это необходимо для работы во всех запросах , поэтому mydomain.com/whatever идет на sub.mydomain.com/whatever.301 Перенаправление из основного домена (www и не-www) в субдомен

Я попытался это, который работает только для не-WWW на основной домен:

RewriteCond %{HTTP_HOST} ^mydomain.com [NC] 
RewriteRule ^(.*)$ http://sub.mydomain.com/$1 [L,R=301] 
+0

Я более любопытно просто для учебных целей, чем что-либо еще, но в чем преимущество этого перенаправления? – JM4

ответ

3

Вы могли бы конденсироваться их в одно правило, а: точка

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteRule^http://sub.example.com%{REQUEST_URI} [R=301,L] 

Марка о / является важным фактором. Так как вы определяете правило в .htaccess, вход (и по объединению захваченной обратной ссылки) не будет начинаться с ведущей косой черты, поэтому вам действительно нужен явный в этом случае (например, у вас был).

Поскольку мы просто хотим, чтобы весь путь в любом случае, с помощью %{REQUEST_URI} является более надежным в этом смысле, потому что она всегда будет иметь ведущую косую черту, независимо от контекста, который мы используем правило в.

2

Также добавьте:

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

Одно также отметить, вы, вероятно, не хотите, чтобы последний / в вашем RewriteRule, так как он добавит два слэша к перенаправленному URL (например, http://mydomain.com/foo.html станет http://sub.mydomain.com//foo.html).

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

  • Нет связанных вопросов^_^