包括 ccTLD 的顶级域名,以及非 www 子域名和重定向到 https。

时间:2021-08-12 04:01:44

标签: .htaccess redirect

关于 .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

0 个答案:

没有答案