如果请求来自特定主机

时间:2015-06-12 11:42:13

标签: apache http mod-rewrite ssl url-rewriting

Web服务器是apache,ssl配置,监听443, 所有http请求都将使用重写规则重定向到https

问题是所有网址都是通过https服务的,但我们希望通过http连接到网络服务器,如果请求来自特定主机的特定网址,其余全部应通过ssl提供

示例:

当我们访问网址/test/devices时,通常会通过ssl来服务 https://example.com/test/devices

但是当我们从主机10.1.2.3访问URL /test/devices时,请求应该通过http协议而不是https来服务

这应该仅从该主机发生,如果任何其他主机访问此URL,则应通过ssl提供服务

我们正在使用的当前重写网址

RewriteEngine on
RewriteRule ^/$ /test/ [R=301,L]

RewriteCond %{SERVER_PORT} =80
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R,L]

第一条规则会将所有请求重定向到测试文件夹

第二条规则会将请求重定向到https

感谢您的回复!

1 个答案:

答案 0 :(得分:0)

您应该添加另一个RewriteCond以排除此IP的重定向:

RewriteCond %{SERVER_PORT} =80
RewriteCond %{REMOTE_ADDR} !=10.1.2.3
RewriteRule ^(.*) https://%{SERVER_NAME}%{REQUEST_URI} [R,L]