与弹性负载平衡器和路由53使用htaccess

我已将DNS转移到Route 53,并使用别名logging将我的www.domain.com和domain.com指向我的Elastic Load Balancer。

这两个工作很好,但我的问题是,当我尝试使用htaccess文件redirect非www到www。 当我访问domain.com并重新路由到www.domain.com时,它只是失败了DNS查找和错误,直接去www.domain.com仍然工作。

在我使用负载平衡器做所有事情之前,当我刚刚testing实例时,我会去我的域的公共DNS“ec2-99-99-999-99.compute-1.amazonaws.com”例如,每当我把htaccess文件,它会跳转到“www.ec2-99-99-999-99.compute-1.amazonaws.com”,并产生一个错误。

任何帮助将非常感激,因为我正在撕掉我的头发。

没有看到你的.htaccess文件,它不是完全清楚发生了什么事情,但是这样的事情应该工作,如果你有mod_rewrite启用:

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC] RewriteRule ^/?(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

编辑:

如果您看到ELB发生502错误,可能是因为您的应用程序没有返回完整的响应头,而只是返回一个HTTP响应代码。 在EC2开发论坛上对此进行了讨论: https : //forums.aws.amazon.com/message.jspa? messageID =345128

您可以通过监视服务器上的networkingstream量来确定将哪些标头和响应代码发送回ELB,以解决此问题。 你可能应该这样做,当它失败(在手机上),并成功(在你的电脑上)。

假设你的服务器正在运行linux, ngrep是一个很好的简单工具:

 # Just show HTTP traffic ngrep -q '' port 80 # Just show GET and POST requests ngrep -t '^(GET|POST) 'port 80' 

否则,你可以使用在Windows下运行的Wireshark。