【问题标题】:htaccess to force https "www" to redirect to non "www"htaccess 强制 https "www" 重定向到非 "www"
【发布时间】:2017-06-14 16:15:49
【问题描述】:

我知道这方面有一些主题,但我尝试过的所有配置通常都会使我的网站根本无法访问。我的问题是我们最近获得了 SSL 证书,但仅适用于网站的非“www”版本,但如果用户使用“www”编写 URL,他们将收到不安全的网站消息。这是当前的 htaccess 文件:

# BEGIN WordPress
<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

例如,这个配置也不会做任何事情:

# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
# END WordPress

【问题讨论】:

  • 不要忘记 dns 和重定向通常被您的浏览器/系统缓存,因此尽管清除了浏览器缓存,一些重定向实际上不会在几个小时内生效。我会避免频繁更改并尝试不同的重定向。尝试一些东西,然后将其放置一天,然后进行测试。如果它不起作用,请尝试下一个并离开一天。此外,关闭所有网络级别和站点级别的缓存,直到您修复此问题。请记住使用 Velvet URL 或类似插件将所有站点链接重写为非“www”,并在执行任何其他操作之前在 WP Admin 中更改站点 URL。
  • 过一会我看看能不能用,谢谢。
  • 你可能看了一整天左右。

标签: wordpress .htaccess redirect


【解决方案1】:

如果您使用的是 apache(我认为),您可以尝试:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://yourdomain.com/$1 [R=301,L]

当然一定不要有“www”。在您的网站设置中,因为这可能会破坏整个网站。

您还可以将 www 重定向到 .htaccess 中的非 www:

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

此外,这有助于避免混合内容警告。总是把它放在 .htaccess 中

Header always set Content-Security-Policy: upgrade-insecure-requests

干杯

【讨论】:

  • 我尝试了各种重定向都无济于事。如果我在 Firefox 上尝试,并且用户使用“www”写入 URL,他们根本不会被重定向,并且会收到站点不安全的消息。那个简单的方法行不通。
  • 在这种情况下,我会联系托管服务提供商并询问是否启用了“mod rewrite”。如果服务器不遵循 .htaccess 规则很奇怪
  • 我在这里也看到了这个仅适用于 Firefox 的问题,它也与 wordpress 安装有关。不知何故,Firefox 中的重写并没有省略 www。并转到dns.com 而不是dns.com - Firefox 是否存在已知错误?
猜你喜欢
  • 1970-01-01
  • 2014-07-26
  • 2013-07-01
  • 1970-01-01
  • 2019-12-04
  • 2017-05-03
  • 2018-11-12
  • 2018-08-20
  • 1970-01-01
相关资源
最近更新 更多