将http重定向到https排除特定的IP

时间:2017-01-28 04:45:15

标签: apache .htaccess mod-rewrite http-redirect

我已使用以下规则排除200.200.0.17从http重定向到https,但其请求(从200.200.0.17)仍被重定向到https。任何帮助将不胜感激。

<VirtualHost _default_:80>
# If mod_rewrite is present, it takes precedence over mod_alias
# and it is necessary to rewrite the request to https.
  <IfModule mod_rewrite.c>
     RewriteEngine on
     RewriteCond %{REMOTE_ADDR} !^200.200.0.17
     RewriteRule (.*) https://%{HTTP_HOST}$1
  </IfModule>

# Otherwise use mod_alias to redirect.
  Redirect / https://%{HTTP_HOST}/
</VirtualHost>

2 个答案:

答案 0 :(得分:1)

这是因为您设置了备用重定向,请删除:

Redirect / https://%{HTTP_HOST}/

或者它会在第一条规则忽略之后继续重定向该IP。

答案 1 :(得分:1)

执行第一条规则后,第二条规则也会执行。要防止这种情况发生,请使用last标志。更改代码中的行:

RewriteRule (.*) https://%{HTTP_HOST}$1 [L]

请参阅:https://httpd.apache.org/docs/2.4/rewrite/flags.htm