У меня есть файл 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
который не нужен, но немного короче.