我在Apacheconfiguration中使用以下mod_rewrite规则来强制通过https:
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
当我从同一个networking内部访问服务器时,这很好用。 当我从外部访问它时,重写不会发生,并且不会更改为https。 在这两种情况下,我都使用相同的URL来访问它。
任何想法,为什么发生这种事情,可以做些什么呢?
编辑:我不能回答我自己的问题,因为我的名誉低,但我发现这个问题:
解
这个服务器需要符合PCI标准,所以我把防火墙放在80端口后面。 这意味着这个请求从来没有足够的重写来自外部的信息。
这意味着你不得不请求https开始,因为我不能转发它。 (也许我可以看看我是否可以让防火墙做到这一点,但这是一个单独的问题。)
我想你想要RewriteCond
基于服务器端口:
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
不过,你已经确定这个规则不是问题。
在你的apacheconfiguration文件或者vhostconfiguration文件中打开你的RewriteLog ,看看mod_rewrite是什么。
另外,提供iptables -L
的输出