Назад | Перейти на главную страницу

.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 для этого?

Вы можете исключить каждый 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>
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

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