背景
我想全站https,直接修改数据库
我这里用了yoast seo插件,所以有最后两条。
其实你自己去数据库里面去看一看就知道哪些地方需要替换了。
UPDATE wp_options SET option_value = replace( option_value, 'http://youurl.com', 'https://youurl.com' ) WHERE option_name = 'home' OR option_name = 'siteurl';
UPDATE wp_posts SET post_content = replace( post_content, 'http://youurl.com', 'https://youurl.com' ) ;
UPDATE wp_posts SET guid = replace( guid, 'http://youurl.com', 'https://youurl.com' ) ;
UPDATE wp_yoast_indexable SET permalink = replace( permalink, 'http://youurl.com', 'https://youurl.com' ) ;
UPDATE wp_yoast_seo_links SET url = replace( url, 'http://youurl.com', 'https://youurl.com' ) ;
可是替换之后出现了 此页面不能正确地重定向的问题。
通过调试手段知道,一直在循环301跳转。
解决办法
总之我试了很多方法。
最后的解决办法:
修改 .htaccess
RewriteEngine On
RewriteCond %{HTTP:From-Https} !^on$ [NC]
RewriteRule ^(.*)$ https://youurl.com/$1 [R=301,L]
# BEGIN WordPress
# 在“BEGIN WordPress”与“END WordPress”之间的指令(行)是
# 动态生成的,只应被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
然后在 wp-config.php 中增加下面的代码。
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';