【问题标题】:.htaccess remove www with GCP hosted site.htaccess 使用 GCP 托管站点删除 www
【发布时间】:2020-08-29 17:35:18
【问题描述】:

我有一个托管在 GCP 存储桶上的网站,我使用 cloudflare 进行 HTTPS。 如何使用 .htaccess 文件删除 www。从所有网站页面并将它们重定向到 HTTPS?

基本上,我想要:

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

and any other pages like
https://www.example.com/about.html or http://www.example.com/about.html redirect to https://example.com/about.html

我找到了需要添加到我网站根目录的 .htaccess 文件的配置:

捕获所有并将 www 重定向到无 www (HTTPS):

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

我将 example.com 替换为我的域名,将文件放入我的 GCP 存储桶的根目录中,但没有任何反应。如果我尝试通过http://example.com 访问我的网站,我会收到DNS_PROBE_FINISHED_NXDOMAIN 错误。我尝试使用 ANSI 和 UTF-8 保存 .htaccess,结果相同。

我该怎么做:

  1. 删除 www.从我的网站使用 .htaccess
  2. 不带 www 将用户重定向到 https://。
  3. .htaccess 应该使用什么编码?有关系吗?

这甚至可以通过我的 GCP 存储桶托管静态网站和 cloudflare 提供的 https:// 实现吗?

我尝试通过我的域名注册商的控制面板设置重定向,但他们不支持使用 dns 名称服务器而不是他们自己的默认名称服务器的重定向。

【问题讨论】:

    标签: .htaccess url


    【解决方案1】:

    最简单的解决方案是使用 CloudFlare 来处理 HTTPS 和 www 站点重定向。

    要强制使用 HTTPS,请转到 CloudFlare 设置:SSL/TLS => Edge Certificates => Always Use HTTPS => On

    始终使用 HTTPS: 将所有使用方案“http”的请求重定向到“https”。这适用于 对区域的所有 http 请求。

    要将某些位置重定向到其他位置,您可以创建页面规则。见例子https://support.cloudflare.com/hc/en-us/articles/200172286-Configuring-URL-forwarding-or-redirects-with-Cloudflare-Page-Rules

    【讨论】:

    • 当我将页面规则添加到“mydomain.com 到 www.mydomain.com”或“www.mydomain.com 到“mydomain.com”时,它似乎不起作用。mydomain.com不可用,我猜这是因为 CNAME 指向 www.mydomain.com。
    【解决方案2】:

    这里可能存在更多问题(自从我与 Apache 混淆以来已经有一段时间了),但是您的正则表达式中未转义的句点肯定会导致问题。试试这个:

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

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2016-01-07
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      相关资源
      最近更新 更多