Apache重写规则不起作用

我正在使用AWS Elastic Load Balancer,并设置了以下规则将httpstream量转换为https

/etc/httpd/conf.d/httpd_redirect.conf

  <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </VirtualHost> 

但是,当我通过域名( www.thewhozoo.com )访问我的网站时,我可以看到协议是http而不是https

任何想法,为什么重写规则不起作用?

谢谢

更多信息

/etc/httpd/conf/httpd.conf

 ... Include conf.d/*.conf Include conf.d/elasticbeanstalk/*.conf ... 

以上是在部署时创build的:

.ebextensions/myapp.config

 container_commands: 01_setup_apache: command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf" files: "/etc/httpd/conf.d/httpd_redirect.conf" : mode: "000644" owner: root group: root content: | <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </VirtualHost> 

ELB听众

在这里输入图像说明

你有一个configuration片段/etc/httpd/conf.d/ssl_rewrite.conf

通常,这样的片段通过IncludeIncludeOptional指令加载

 Include conf.d/*.conf 

要么

 IncludeOptional conf.d/*.conf 

从你的主httpd.conf

问题是,这些片段只适用于你的主要configuration,不适用于任何VirtualHost部分…

要么在虚拟主机定义中包含这些设置,要么在那里加载该代码段:

 <VirtualHost *:80> ServerName www.thewhozoo.com Include /etc/httpd/conf.d/ssl_rewrite.conf </VirtualHost> 

或者甚至更好, 不要使用mod_rewrite并设置:

 <VirtualHost *:80> ServerName www.thewhozoo.com Redirect "/" "https://www.thewhozoo.com/" </VirtualHost>