.htaccess 允许 www 和非 www

问题描述 投票:0回答:2

我有可以像

https://sub.example.com
一样访问的子域,但如果我这样做
www.sub.example.com
它会返回

找不到服务器

目前没有任何

.htaccess
文件,如果我输入
sub.example.com
,它会转到
https://sub.example.com
,如果我输入
www.sub.example.com

,我希望发生同样的事情

有什么想法吗?

regex apache .htaccess redirect mod-rewrite
2个回答
1
投票

您可以尝试以下吗?

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

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


或者如果每个请求都必须是

https
并且没有
www
那么我们可以尝试更好。

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

0
投票

最好的解决方案是这样的:

# Add www if not subdomain
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Remove www if subdomain
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.[^.]+\.[^.]+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]

结果示例:

© www.soinside.com 2019 - 2024. All rights reserved.