我最近将一个简单的 PHP 网站移到了 Elastic Beanstalk,但发现很难将 重定向www.example.com
到example.com
。它不是 https,我发现的大多数建议都与。
这就是我所拥有的:
路线53:
A example.com example.eu-west-1.elasticbeanstalk.com (Alias)
CNAME www.example.com example.eu-west-1.elasticbeanstalk.com
在我的.htaccess
文件中,有以下内容:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L]
</IfModule>
访问时example.com
一切正常,但访问时www.example.com
出现重定向循环:
http://www.example.com/var/www/html/://example.com/var/www/html/://example.com
这是在 AWS 上重定向的最佳方式吗?
编辑
我现在也尝试过
RewriteCond %{HTTP:X-Forwarded-Proto} !=https [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{SERVER_NAME} ^(www\.)?(.*)$ [NC]
RewriteRule ^/?(.*)$ http://%2/$1 [L,R=301]
并且虽然www.example.com
确实重定向到example.com
,但它现在具有重定向循环(尽管地址栏中没有服务器路径)。
答案1
这不是解决您的.htaccess
问题的方法,但一个简单的重定向解决方案是使用 S3 存储桶进行重定向。
- 设置 S3 存储桶
www.example.com
并将其设置为网站重定向到example.com
- 将 Route 53 中的记录集设置
www.example.com
为此存储桶的别名。
这样,当您的用户访问 时www.example,com
,他们将会访问存储桶,然后将他们重定向到example.com
,然后转到您的服务器。