将非WWW重定向为WWW格式,并将其重定向到VirtualHost中的HTTPS

时间:2017-03-14 09:21:42

标签: apache virtualhost http-redirect amazon-elb apache2.2

非www重定向到www并强制https ,仅在http://www.example.com上返回 302 temporary redirect

根据协议和主机名,请参阅下面的Status Codes - 测试我的网站http://www.mypetcerts.com

example.conf

    <VirtualHost *:80>
       ServerName www.example.com
       # server config 
    </VirtualHost>

    <VirtualHost *:80>
       ServerName example.com
       RedirectMatch permanent ^/?(.*) https://www.mypetcerts.com/$1
    </VirtualHost>

我想这是因为我在没有https重定向的情况下点击上面的VirtualHost 1,因为规范名称是正确的,并且无需在ServerName example.com上点击VirtualHost 2。任何人都有这种风格的答案设置?我也在亚马逊ELB上运行。

注意:这是Apache2.2我无法利用Apache2.4 IF指令:(

我认为重定向到www然后到https是可能的,但从我的理解执行多重定向(例如到www然后到https)对SEO来说不是很好。

我需要所有可能的结果才能使用https://www.example.com转到301 permanent redirect

1 个答案:

答案 0 :(得分:1)

解决!使用重定向重写的组合,我可以从HTTP获得单个301永久重定向,非www到HTTPS www。我使用下面显示的RewriteCond仅在HTTP上处理我的后端监听器(例如:80)。

见这里:AWS Support

<VirtualHost *:80>
   ServerName www.example.com

   RewriteEngine On
   RewriteCond %{HTTP:X-Forwarded-Proto} !=https
   RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R=301,L]
   # additional optional server config 
</VirtualHost>

<VirtualHost *:80>
   ServerName example.com
   RedirectMatch permanent ^/?(.*) https://www.example.com/$1
</VirtualHost>