我们在一些网站上使用 cPanel,我们使用以下 .htaccess 规则,并且在大多数情况下它们可以正常工作,但它们有一些问题......
# Force HTTPS & NON-WWW
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
</IfModule>
根据以下规则,如果我们访问非 www 链接,它们会正确切换到 www。好的链接
# Force HTTPS & WWW
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
</IfModule>
这条Force HTTPS & WWW规则的问题是当我们谈到子域时......
- 如果我们访问
staging.website.com不正确,它会被重写为www.staging.website.com. 当然可以使用类似的条件RewriteCond %{HTTP_HOST} !^staging\. [NC],但这意味着每个子域都需要一个设置。 - 添加该条件的另一个问题是,如果我们访问 staging.website.com,它不会被迫使用 https...
- 在更复杂的设置中,我们有一个 cPanel 帐户,其中有 3 个网站
https://,一个是https://www.,对于那个特定的 cPanel 帐户,我不知道如何修改这些 .htaccess 规则以适用于这两种情况......
#1和#2在涉及到时最引人注目ipv6.website.com
强制`httPs & WWW的规则测试
https://website.com-->https://www.website.comhttp://website.com-->https://www.website.comhttps://www.website.com-->https://www.website.comhttp://www.website.com-->https://www.website.comhttps://ipv6.website.com-->https://ipv6.website.comhttp://ipv6.website.com-->https://ipv6.website.comhttps://www.ipv6.website.com-->https://ipv6.website.comhttp://www.ipv6.website.com-->https://ipv6.website.comhttps://randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttp://randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttps://www.randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttp://www.randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttps://ftp.website.com-->http://ftp.website.comhttp://ftp.website.com-->http://ftp.website.comhttps://www.ftp.website.com-->http://ftp.website.comhttp://www.ftp.website.com-->http://ftp.website.com
强制`httPs & Non-WWW 的规则测试
https://website.com-->https://website.comhttp://website.com-->https://website.comhttps://www.website.com-->https://website.comhttp://www.website.com-->https://website.comhttps://ipv6.website.com-->https://ipv6.website.comhttp://ipv6.website.com-->https://ipv6.website.comhttps://www.ipv6.website.com-->https://ipv6.website.comhttp://www.ipv6.website.com-->https://ipv6.website.comhttps://randomsubdomain.website.com-->https://randomsubdomain.website.comhttp://randomsubdomain.website.com-->https://randomsubdomain.website.comhttps://randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttp://randomsubdomain.website.com-->https://www.randomsubdomain.website.comhttps://ftp.website.com-->http://ftp.website.comhttp://ftp.website.com-->http://ftp.website.comhttps://www.ftp.website.com-->http://ftp.website.comhttp://www.ftp.website.com-->http://ftp.website.com