mod_rewrite只允许一个文件并限制其他文件

时间:2014-07-16 21:05:00

标签: regex apache .htaccess mod-rewrite

RewriteEngine On
RewriteCond $1 !^(allow\.php)
RewriteRule ^(.*)$ /allow.php/$1 [L,R=301]
RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC]
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$
RewriteRule .* http://www.google.com [R=302,L]

我写了这段代码来限制对我的页面的访问。但我希望每个人都能访问allow.php 此代码无法正常工作,但仍会重定向。 为什么会这样?

2 个答案:

答案 0 :(得分:0)

您需要删除此部分:

RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC]
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$
RewriteRule .* http://www.google.com [R=302,L]

由于重写引擎将循环并且重写的/allow.php/something/something将点击第二个规则并被重定向。

答案 1 :(得分:0)

你的规则如下:

RewriteEngine On

RewriteRule ^sub\.php - [L,NC]

# if not sub.php, not desired user agent and not your IP then redirect
RewriteCond %{HTTP_USER_AGENT} !MYUSERAGENT [NC]
RewriteCond %{REMOTE_ADDR} !^12.12\.12\.12$
RewriteRule ^ http://www.google.com [R=302,L,NC]