我开始使用AWS部署,主要是出于必要,在Elastic Beanstalk,Elastic Filesystem,Amazon RDS(MariaDB)和Route 53 plus证书上安装Wordpress。我跟着一对夫妇开始并把所有东西放在一起,到目前为止,我做得很好,但现在我面临着一些问题。
寻找解决方案时,我遇到了this answer我已经实施过,但我无法判断它是否真的有效。
我该怎么办?
我尝试this answer提出的解决方案无济于事,问题重复了。进一步搜索让我find someone with exactly the same issue as mine。
据此我认为,真正简单的SSL可能是罪魁祸首,并开始寻找替代品而不使用插件。所以我登陆this AWS Developer Forums thread,其中有些事情进展顺利,因为我设法将主页和WP管理员重定向到HTTPS。 但网站的其余部分没有。
答案 0 :(得分:1)
以下内容多次适用于我。这假设您拥有AWS Certificate Manager的SSL证书。
使用以下内容在MemberSignIns
ID MemberID UTC Lat Long
11 4 6/23/17 16:23 40.736999 -73.875247
12 4 6/23/17 16:32 40.782117 -73.980739
13 5 6/23/17 16:40 40.643339 -73.977714
14 6 6/23/17 16:48 40.760262 -73.993287
15 7 6/23/17 16:56 40.722414 -73.992452
16 4 6/23/17 17:04 40.692259 -73.766641
目录中创建文件secure-listener.config
:
.ebextensions
将option_settings:
aws:elb:listener:443:
SSLCertificateId: replace:with:your:arn
ListenerProtocol: HTTPS
InstancePort: '80'
文本替换为证书的ARN。上面告诉Elastic Beanstalk将您的SSL证书用于端口443上的请求,并将这些请求转发到EC2实例上的端口80.
使用以下内容在replace:with:your:arn
目录中创建文件ssl-rewrite.config
:
.ebextensions
files:
"/etc/httpd/conf.d/ssl_rewrite.conf":
mode: "000444"
owner: root
group: root
content: |
RewriteEngine On
<If "-n '%{HTTP:X-Forwarded-Proto}' && %{HTTP:X-Forwarded-Proto} != 'https'">
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301]
</If>
SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS=on
子句检查Elastic Beanstalk设置的<If></If>
标头是否等于https。如果不是,则将请求重定向到https。如果原始请求超过https,X-Forwarded-Proto
语句将创建SetEnvIfNoCase
环境变量。 WordPress需要将此环境变量设置为正确运行。
假设您的网站为HTTPS
,请将以下内容添加到www.example.com
文件中:
wp-config.php
此回复基于this tutorial,这可能对其他详细信息有所帮助。
答案 1 :(得分:0)
尝试在wp-config.php中设置RELOCATE
define('RELOCATE',true);
注意:当RELOCATE标志设置为true时,将显示站点URL 自动更新到您用于访问的任何路径 登录界面。这将使管理部分启动并运行 新网址,但不会更正设置的任何其他部分。那些 你仍然需要手动改变。
同时检查以下表格是否一致:
select * from options where option_name = 'siteurl';
select * from options where option_name = 'home';
select domain from site;
select * from sitemeta;
select * from blogs;
select * from sitemeta where meta_key = 'siteurl';
答案 2 :(得分:0)
如果您使用的是负载均衡器(ELB),我没有从您的评论中获得。但即便如此,Really-simple-ssl也应该检测出来。
永久链接的问题可归因于您实际上忽略了本地.htaccess文件,或者它与服务器上的文件不同。确保在更新时包含它。更新时,您的数据库未重置或更改。 请注意,使用EB CLI进行部署时,它基本上会拍摄本地版本的快照,将其拉上并上传到新的应用程序版本,因此它会完全忽略服务器上以前版本中的任何内容。
# 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>
尝试将所有重要的环境值保留在EBS中,然后选择look here。我还在这些ENV变量中包含了WP_HOME和WP_SITEURL,因此可以轻松调整它们。如果您无法通过Phpmyadmin或类似软件更新数据库,请在functions.php中使用以下内容以更新为HTTPS!
update_option( 'siteurl', 'https://example.com' );
update_option( 'home', 'https://example.com' );
在任何情况下,你都需要这个插件来你的wp-config.php
if (($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] ==
'https') OR ($_SERVER['HTTP_X_FORWARDED_PROTO'] ==
'https'))
{$_SERVER['HTTPS']='on';}
如果您尚未安装EBS,我建议使用此step-by-step guide安装EBS。
如果您之前尝试过这些事情,请告诉我,我还有其他一些技巧。另请注意,我假设您在各处使用正确的安全组设置!
干杯!