至少几天我一直在与mod_rewrite htaccess挣扎,但仍然无法解决这个问题。
我想在我的网站上强制使用HTTPS SSL,但仅限于网络外部。
我有这样的事情:
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.30
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.mysite.com/$1 [R,L]
我的本地IP为192.168.1.30
,并且不断更正我的地址https://www.mysite.com
。
在一种情况下,它允许我本地连接到我的服务器。当我输入https://192.168.1.10
(我的本地服务器地址)时。但它一直让我谨慎,不能保持这种方式。
当我输入http://192.168.1.10
时,它会将我重定向到https://www.mysite.com
如何让所有重定向单独留下我的ip?
根据我的逻辑,无论我的REMOTE_ADDR
是192.168.1.30
,都不应该重定向我。
答案 0 :(得分:1)
你可以尝试这条规则:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^(192\.168\.|127\.0\.0\.1)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
答案 1 :(得分:0)
我认为你根本不需要重写规则。由于HTTP在端口443上侦听端口80和HTTPS,因此您可以拥有三个不同的VirtualHost。
但是,您可能必须将此逻辑从htaccess
文件移至.conf
文件。
由于apache开始按照.conf文件中定义的顺序查找匹配的VirtualHost(视情况而定为http.conf或apache.conf),因此排序非常重要。