单个域名的 htaccess 重定向

单个域名的 htaccess 重定向

我有一个由多个站点共享的 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>

它不起作用。任何帮助都将不胜感激。非常感谢!

答案1

请尝试

# 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这样就不需要了,但是会短一些。

相关内容