[英]Struggle with mod_rewrite
我在至少几天里一直在用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
(我的本地服务器地址)。 但是它总是让我对SSL保持谨慎,这不能用这种方式保持。
当我输入http://192.168.1.10
它会将我重定向到https://www.mysite.com
如何使所有重定向都离开我的IP?
按照我的逻辑,无论我的REMOTE_ADDR
是否为192.168.1.30
,它都不应重定向我。
您可以尝试以下规则:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^(192\.168\.|127\.0\.0\.1)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
我认为您根本不需要重写规则。 由于HTTP侦听端口80和HTTPS侦听端口443,因此您可以拥有三个不同的VirtualHost。
但是,您可能必须将此逻辑从htaccess
文件移动到.conf
文件。
由于apache开始按照在.conf文件中定义的顺序(视情况而定为http.conf或apache.conf)查找匹配的VirtualHost,因此顺序非常重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.