在我的 .htaccess 中,我只想重写 url,以防 url 中没有子域

In my .htaccess I want to Rewrite the url ONLY in case there is no subdomain in the url

我想 example.com 重写为 www.example.com 但前提是 url:

中没有子域
example.com -> rewrite to www.example.com

s.example.com -> no rewrite

peace.example.com -> no rewite

等.. 等..

我发现的所有子域重写都添加了 www,不管它是否有子域,这让我很困惑。我不希望它重定向到 www.c.example.com

您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]

标志:

  • NE - 无编码
  • L - 最后一条规则
  • R=301 - 使用 http status=301
  • 重定向

RewriteCond %{HTTP_HOST} ^example\.com$ 将在域为 example.com.

时执行

参考文献:

您可以使用两个虚拟主机并为每个虚拟主机定义不同的重写规则。

<VirtualHost *:80>
ServerName example.com
# rewrite to www.example.com
</VirtualHost>

<VirtualHost *:80>
ServerName *.example.com
# do not rewrite
</VirtualHost>

编辑:

不过这需要使用虚拟主机文件。