我有一个网站托管在GCP bucket上,我使用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文件的配置,我需要添加到我的网站的根目录下。
Catch all and redirect www to no -www (HTTPS):
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule ^(.*)$ https://example.com$1 [R=301,L]
我把example.com换成了我的域名,把文件放到GCP bucket的根目录下,结果什么都没发生。如果我尝试通过以下方式访问我的网站 http:/example.com 我得到 DNS_PROBE_FINISHED_NXDOMAIN
错误。我尝试用ANSI和UTF-8保存.htaccess,结果一样。
我该怎么做。
我的GCP bucket托管的静态网站和cloudflare提供的https:/是否可以这样做?
我试着通过我的域名注册商的控制面板设置重定向,但他们不支持用dns名称服务器重定向,除了他们自己的默认名称服务器。
最简单的解决方案是使用CloudFlare来处理HTTPS和www网站重定向。
要强制使用HTTPS,请进入CloudFlare设置。SSL/TLS
=> Edge Certificates
=> => Always Use HTTPS
=> On
.
始终使用 HTTPS: 将所有使用 "http "方案的请求重定向为 "https"。这适用于对该区的所有 http 请求。
要将某些位置重定向到其他位置,您可以创建一个页面规则。请参见示例 https:/support.cloudflare.comhcen-usarticles200172286-Configuring-URL-forwarding-or-redirects-with-Cloudflare-Page-Rules。
这里可能有更多的问题在起作用(我已经有一段时间没有使用Apache了),但是在你的条件的regex中的unescaped periods肯定会引起问题。试试这个。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]