您需要设置规范主机名(即www
) 在WordPress仪表板中。。。在“设置”>“常规”下,设置相应的“WordPress地址(URL)”和“网站地址(URL)”属性。
或者,这些值可以硬编码wp_config.php
通过定义WP_HOME
和WP_SITEURL
分别为常数。
参考文献:
https://codex.wordpress.org/Changing_The_Site_URL
SSLOptions +StrictRequire
SSLRequireSSL
SSLRequire %{HTTP_HOST} eq "example.com"
ErrorDocument 403 https://example.com
顺便提一下,这是一种非常迂回的(不推荐)重定向到HTTPS的方式。是的,这将触发302(临时)重定向,而不是301(永久)重定向。这只会重定向,因为
ErrorDocument
. 并且它只重定向到文档根目录,请求的URL将丢失。
此代码实际上阻止了对仅HTTP站点的访问,并触发403禁止。因为您已经将绝对URL设置为自定义403的第二个参数,Apache会触发一个外部(302)重定向到URL,即站点的根。
如果您没有访问服务器配置的权限,则通常使用中的mod\\u rewrite来实现此重定向.htaccess
. 例如:
RewriteCond %{HTTPS} !on
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
这需要在中现有的WordPress指令之前执行
.htaccess
.
一旦在WordPress中设置了适当的主机名,就可以在中处理HTTPS和www重定向.htaccess
如果你愿意(效率会稍微高一点)。例如:
RewriteCond %{HTTPS} !on [OR]
RewriteCond %{HTTP_HOST} !www\\.
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]
确保在测试之前清除浏览器缓存。
只有当用户开始输入www.时,我才需要保留它。
除非你有具体的理由这样做,否则这通常是个坏主意。它可能会创建重复的内容,尽管您可以设置rel="canonical"
中的标记head
部分来缓解这种情况,您可以在Google搜索控制台中指定一个首选项(以避免两个主机都被索引)。但是统计数据将在他们之间进行分配。您如何设置Cookie?如果您希望在www和非www(登录、会话等)之间共享Cookie,则需要确保在apex域上设置Cookie,无论访问哪个主机-我不认为这是默认行为。
无论如何,如果您想将HTTP重定向到HTTPS,但保留已访问的任何主机(www、非www或xyz别名),那么这是一个更简单的重定向,因为您可以引用HTTP_HOST
服务器变量。例如:
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]