【问题标题】:Make top-level domain including ccTLD with www, subdomain as non-www and redirect all to https制作顶级域,包括带有www的ccTLD,子域为非www,并将所有重定向到https
【发布时间】:2021-08-12 04:01:44
【问题描述】:

关于 .htaccess 文件的问题。我已经解决了几乎所有相关的问题,没有答案给出一般的解决方案。

我希望 所有人都使用 https,www 到顶级域,包括国家代码顶级域(co.uk、co.jp、com.cn),非 www 到子域

如何实现?

我尝试像这样编辑 .htaccess 文件(不仅仅是这个 sn-p,我也尝试了很多其他文件):

# 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 将被添加到它之前。


更新:

经过一番调查,我认为最好的做法是不要对顶级域和国家代码顶级域都有一个通用的解决方案。

所以我正在分别为 TLD 和 ccTLD 寻找 2 个通用解决方案,然后我不需要将字符修改为我的域之类的东西。

解决方案 1 应该具有预期的 TLD 重定向行为,如下所示:

  • 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 应该具有预期的 ccTLD 重定向行为,如下所示:

  • 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

【问题讨论】:

  • 您的域/子域是否指向同一个文档根目录?
  • @AmitVerma 是的,目前staging1.example.com 等子域与主域位于同一根文件夹中。

标签: .htaccess redirect


【解决方案1】:

打开您的 wordpress 站点数据库 -> wp_options.php

并像这样更改 site_url 和 home_url:

http://example.com to https://www.example.com

【讨论】:

  • 这是在修改 .htaccess 文件之前编辑站点 url 的方法之一。我想我需要先学习一些基本的东西。
【解决方案2】:

替代方案:

    RewriteEngine On
    RewriteCond %{HTTPS} !=on
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    Header always set Content-Security-Policy "upgrade-insecure-requests;"

    # BEGIN WordPress
    # The directives (lines) between `BEGIN WordPress` and `END WordPress` are
    # dynamically generated, and should only be modified via WordPress filters.
    # Any changes to the directives between these markers will be overwritten.
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    # END WordPress

注意:首先将您的 site_url 和 home_url 设置为 https://www.example.com

然后更改 .htaccess 文件,否则如果您仅更改 .htaccess 但不更改您的 site_url、home_url,则站点将无法运行

【讨论】:

  • 你是对的。在更改站点 url 之前,我通过向 .htaccess 文件添加规则犯了一个错误。附加到子域的 www 由我的主机自动添加以控制登台站点。我应该忽略它。
猜你喜欢
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2015-02-25
  • 1970-01-01
  • 2016-09-05
  • 2017-06-20
相关资源
最近更新 更多