mod_rewrite在内部访问,但不在外部工作

我在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的输出