我正在将网站迁移到AWS,并在所有使用ELB启用SSL / TLS的Linux EC2实例上正常运行。除了网站的WordPress部分位于子目录(例如www.mysite.com/blog)中的问题外,一切正常(codeigniter,phpbb3,osticket)。通过http访问博客的某些部分,因此我收到“混合内容”消息。尝试登录博客的管理部分时,我还会获得无限重定向。
为了使https工作,我按照Amazon的说明进行操作,并将推荐的代码添加到我的httpd.conf文件中。
但是,根据此博客(https://blog.lawrencemcdaniel.com/wordpress-aws-elb-ssl)所述,WordPress无法使用它。
AMAZON RECOMMENDED CODE
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
我认为必须有一种方法可以将重写规则应用于除一个目录以外的所有目录,以便我可以按照WordPress的特定说明进行操作,但是我似乎找不到任何有关此信息。 (我可能只是一个贫穷的搜索者!)。我愿意解决这个问题。
- - 编辑 - -
此后,我尝试了以下方法(均无用):
将httpd.conf中的重写规则更改为
RewriteRule!^ blog https://% {HTTP_HOST}%{REQUEST_URI} [L,R = permanent]
并添加
define('WP_HOME','https://www.example.com/blog');
define('WP_SITEURL','https://www.example.com/blog');
在wp配置文件中。
从httpd.conf文件中完全删除了VirtualHost代码,并将WP_HOME和WP_SITEURL保留在wp配置文件中
最佳答案
好。这就是最终为我工作的东西。
在您的httpd.conf文件中使用Amazon推荐的代码
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
将以下内容添加到您的wp-config.php文件中
define('WP_HOME','https://www.yoursitename.com/yourdirectory');
define('WP_SITEURL','https://www.yoursitename.com/yourdirectory');
define('FORCE_SSL_ADMIN', true);
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';