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

htaccess Redirect для одного домена

У меня есть файл htaccess, который используется несколькими сайтами. Это многосайтовая установка, и код до этого перенаправлял www на не www.

  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] 

Для одного сайта xxx.com я должен перенаправить не www на www.

Я пробовал что-то подобное, но это не работает

<If "%{HTTP_HOST} != 'www.xxx.com'">
<If "%{HTTP_HOST} == 'xxx.com'">
  RewriteCond %{HTTP_HOST} .
   RewriteCond %{HTTP_HOST} !^www\. [NC]
   RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</If>
<Else>
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]
</Else>
</If>

Это не работает. Любая помощь будет оценена по достоинству. Большое спасибо!

Пожалуйста попробуйте

# redirect xxx.com to www.xxx.com
RewriteCond %{HTTP_HOST} ^xxx\.com$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://www.%{HTTP_HOST}/$1 [END,R=301]

# redirect www to non-www
RewriteCond %{HTTP_HOST} !^www\.xxx\.com$ [NC]
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http%{ENV:protossl}://%1/$1 [END,R=301]

Я также изменил ^ к ^(.*)$ и %{REQUEST_URI} к /$1 который не нужен, но немного короче.