首页 > 解决方案 > 强制 www。即使没有 / 子域也无法工作

问题描述

我有一个站点 example.com 和一个子域,我想要以下重定向:

subdomain.example.com -> www.subdomain.example.com

example.com -> www.example.com

我使用以下代码

RewriteEngine On

# Force www. always and SSL
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301, L]

# Force SSL if already www.
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301, L]

现在的问题是subdomain.example.com不会重定向,但subdomain.example.com/

访问 example.com 时,我也会收到服务器错误,尽管它确实重定向到 www。正确。

这些重定向的重点是,我可以在根文件夹中的同一个 .htaccess 文件中更轻松地将子域重定向到 subdomain.com,我在一台服务器上有多个域。

标签: apache.htaccess

解决方案


我认为您可以像这样将指令组合在一起:

RewriteEngine On

RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(.*)$  [NC]
RewriteRule (.*) https://www.%1/$1 [R=301,L]

=> 检查 HTTPS 是否关闭,或者域名是否以 www 开头,然后重定向到https://www.whatever


推荐阅读