.htaccess - перенаправить не www на www и сохранить субдомены от перенаправления [дубликат]

Итак, в моем основном домене «domain.com» я создал несколько поддоменов из cPanel, например «sub1.domain.com» и «sub2.domain.com». Их реальное местоположение на сервере - «domain.com/sub1» и «domain.com/sub2».

Теперь я хочу перенаправить не www на www с помощью .htaccess, и это то, что у меня сейчас есть:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>

Это работает. Когда кто-то вводит domain.com, он будет перенаправлен на www.domain.com. Однако, когда кто-то вводит sub1.domain.com, он будет перенаправлен на www.domain.com/sub1, чего я не делаю. хотите, он должен быть в sub1.domain.com.

Что мне добавить в файл .htaccess для этого?

3
задан 23 May 2012 в 16:37
2 ответа

Вы можно исключить каждый sub1 , sub2 индивидуально, например так;

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} ^sub1\.domain\.com [NC]
RewriteRule ^(.*) - [L]

RewriteCond %{HTTP_HOST} ^sub2\.domain\.com [NC]
RewriteRule ^(.*) - [L]

RewriteCond %{HTTP_HOST} !^www\.domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>

Или просто укажите, что вы хотите перенаправить только domain.com на www. domain.com с RewriteCond

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{HTTP_HOST} ^domain\.com [NC]
RewriteRule ^(.*) http://www.domain.com/$1 [L,R=301]
</IfModule>
5
ответ дан 3 December 2019 в 05:31
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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

1
ответ дан 3 December 2019 в 05:31

Теги

Похожие вопросы