WordPress通过.htaccess强制执行https

时间:2018-10-04 12:51:31

标签: wordpress apache .htaccess redirect

由于Google缓存/保存了旧链接,因此我一直在进行301次重定向。因此,我设置了301重定向:

Redirect 301 /old/url/ /index.php/old/url

但是我发现网址不是https://,而是www.example.com/index.php/old/url

我通过https在线搜索了强制.htaccess,但我尝试执行的所有操作都会导致整个网站出错

  

页面无法正确重定向

这是我的.htaccess(减去301重定向):

# 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

# force https
# RewriteCond %{HTTPS} !=on
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# RewriteCond %{HTTPS} !=on
# RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

# ensure https
# RewriteCond %{HTTP:X-Forwarded-Proto} !https 
# RewriteCond %{HTTPS} off
# RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# RewriteCond %{HTTPS} off
# RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如您所见,我尝试了几种不同的方法来实现这一目标,但是其中的所有 都会产生上述错误(并非同时取消所有注释)。

我的网站全是https,但当您搜索旧链接时Google会保留此旧链接,但是重定向不包含https部分,并且如果我尝试输入完整的网址(例如Redirect 301 /old/url/ https://www.example.com/old/url)那么它仍然不起作用。

如何在不破坏网站的情况下对www.example网址强制执行https?

谢谢

1 个答案:

答案 0 :(得分:1)

首先,您需要访问设置»常规页面。从此处,您需要通过将HTTP替换为https来更新WordPress和站点URL地址字段。

enter image description here

您需要通过将以下代码添加到.htaccess文件中来设置从HTTP到HTTPS的WordPress重定向。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

如果要在WordPress管理区域或登录页面上强制使用SSL和HTTPS,则需要在wp-config.php文件中配置SSL。将以下代码添加到wp-config.php文件中“就这样,停止编辑!”行上方:

define('FORCE_SSL_ADMIN', true);