我正在为我的网站强制通过HTTP协议使用https。我设法强制使用http://example.com
=> https://example.com
和所有博客文章URL。
但是,当我尝试访问https://example.com/wp-admin
时,它说example.com
重定向了您太多次。 ERR_TOO_MANY_REDIRECTS
。
请注意:
localhost
和localhost/wp-admin
可以正常工作,并且可以成功登录到管理面板。WP_ENV
,以确定它是本地环境还是生产环境。 这是我的wp-config.php
文件的设置。
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
/** HTTPS */
if (getenv('WP_ENV') == 'production'){
define('FORCE_SSL_ADMIN', true);
define('FORCE_SSL_LOGIN', true);
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
}
if(getenv('WP_ENV') == 'development'){
/* Http only. */
define('WP_HOME', 'http://localhost');
define('WP_SITEURL', 'http://localhost');
}
这是我的.htacess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
<If "%{HTTPS} == 'on'">
# For a site running on port 80 (http)
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^wp-(admin|login|register)(.*) https://example.com/wp-$1$2 [L]
</If>
RewriteCond %{SERVER_PORT} ^80$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
答案 0 :(得分:2)
在您的.htaccess
文件中尝试以下操作:
# Redirect HTTP to HTTPS (all requests)
RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
RewriteRule ^ https://example.com%{REQUEST_URI} [R=302,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Prevent additional filesystem check
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
这假定您位于处理SSL连接的负载平衡器的后面,并且与应用程序服务器的连接实际上是通过HTTP进行的。
仅在确定可以正常工作以避免缓存问题时,才将302
(临时)更改为301
(永久)。
使用WordPress时,应避免编辑# BEGIN WordPress
部分中的指令,因为WordPress会在更新时尝试覆盖此指令(除非您已采取其他措施来阻止此操作)。