关于 .htaccess 文件的问题。我已经查看了几乎所有相关问题,但没有回答给出一般性解决方案。
我希望将 https 强制应用于所有内容,并将 www 转换为顶级域名(包括国家代码顶级域名,如 co.uk、co.jp 和 com.cn),将非 www 转换为子域名。
如何实现这一点?
我尝试编辑 .htaccess 文件,如下所示(不仅是此代码片段,我还尝试了许多其他方法):
# HTTPS forced with www
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
# END HTTPS
在子域名上不起作用,www 将被添加到它前面。
更新:
经过一些调查,我认为最佳实践是不要为 TLDs 和 ccTLDs 提供通用解决方案。
因此,我正在寻找两个通用解决方案,分别针对 TLDs 和 ccTLDs,然后我就不需要将字符修改为例如我的域名。
解决方案 1 应该具有以下预期重定向行为:
http://example.com
-> https://www.example.com
https://example.com
-> https://www.example.com
http://www.example.com
-> https://www.example.com
https://www.example.com
,保持不变
http://subdomain.example.com
-> https://subdomain.example.com
解决方案 2 应该具有以下预期重定向行为:
http://example.co.uk
-> https://www.example.co.uk
https://example.co.uk
-> https://www.example.co.uk
http://www.example.co.uk
-> https://www.example.co.uk
https://www.example.co.uk
,保持不变
http://subdomain.example.co.uk
-> https://subdomain.example.co.uk