WWW重定向

分享于 

3分钟阅读

互联网

  繁體 雙語

问题:

我想把我所有的网络流量定向到 https://example.com

到目前为止,除了 https:www.example.com,我还有

这就是我的虚拟主机配置文件的样子


<VirtualHost _default_:80>


 DocumentRoot"/opt/bitnami/apache2/htdocs"


 RewriteEngine On


 RewriteCond %{HTTPS}!=on


 RewriteRule ^/(.*) https://example.com/[R,L]


 RewriteCond %{HTTPS_HOST} ^https://www.example.com [NC]


 RewriteRule ^/(.*) https://example.com/[R,L]


 <Directory"/opt/bitnami/apache2/htdocs">


. . ......



唯一不重定向的网站是

https://www.example.com

我错过了什么?


回答 1:

据我所知,HTTPS_HOST 不存在,你需要 HTTP_HOST 。 此外,HTTP_HOST 变量不包含该方案。

同样,尽管在技术上它仍然有效,但是你可能希望在正则表达式上下文( 含义"中对那些具有特殊含义的. ( 除了 RewriteRule 替换之外) 进行转义,以避免任何字符") 。 当然,一个点也可以作为的角色,它仍然是好的做法。


<VirtualHost _default_:80>


 DocumentRoot"/opt/bitnami/apache2/htdocs"


 RewriteEngine On


 RewriteCond %{HTTPS}!=on


 RewriteRule ^/(.*) https://example.com/[R,L]


 RewriteCond %{HTTP_HOST} ^www.example.com [NC]


 RewriteRule ^/(.*) https://example.com/[R,L]


 <Directory"/opt/bitnami/apache2/htdocs">




回答 2:

就像Thomas提到的,你想使用 HTTP_HOST 。 你的信息是多余的,甚至没有用处。 也可以重定向端口 80到 443,这意味着 HTTPS 仍将关闭( 未设置) 。 要在端口 443上重定向,需要在 443定义中重新定向。


# http://... to https://...


<VirtualHost _default_:80>


 DocumentRoot"/opt/bitnami/apache2/htdocs"


 RewriteEngine On


 RewriteRule ^/(.*) https://example.com/$1 [R,L]


. . .


</VirtualHost>



# https://www.example.com -> https://example.com


<VirtualHost _default_:443>


 DocumentRoot"/opt/bitnami/apache2/htdocs"


 RewriteEngine On


 RewriteCond %{HTTP_HOST} ^www.example.com [NC]


 RewriteRule ^/(.*) https://example.com/$1 [R,L]


. . .


</VirtualHost>



你也可能需要 $1,这样你在重定向时不会丢失路径。

正如托马斯所提到的,. 是一个好主意,或者你最终能够匹配( 对于主机,不太可以能) 。



RED  Redirect  
相关文章