.htaccess 重写规则

.htaccess 重写规则

可能重复:
您想了解有关 Mod_Rewrite 规则的所有信息但又不敢问吗?

下面的代码将 www. 添加到任何不以 www. 开头的 URL:

RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^(www\.)?(.+)
RewriteRule ^ https://www.%2%{REQUEST_URI} [L,R=301]

但是我希望它能做到这一点仅有的当 url 格式如下时:

something.com

假设 URL 如下:

something.something.com

我不想要添加 www 的规则。

我该如何改变这一点?

答案1

改变

RewriteCond %{HTTP_HOST} !^www\.

到:

RewriteCond %{HTTP_HOST} !(^www\.|\..+\.)

换句话说,将条件从寻找“www”改为寻找 www或者寻找两个点。

不过,考虑到问题的描述,这可能也会起作用,并且具有更简单的优点:

RewriteCond %{HTTP_HOST} !\..*\.

该问题可能更好地描述为“仅在“www.”前面添加一个点来重写任何主机”。

相关内容