阻止.htaccess中的特定网址并允许通过IP进行访问

时间:2013-06-22 08:45:33

标签: .htaccess

我遇到了问题,我想使用.htaccess保护我网站的管理面板,但是它是一个CGI脚本。

来自WebBrowser的

看起来像是:http://mysite.com/?op=adminpanel

当然是/cgi-bin/index.cgi?op=adminpanel

我尝试过:

<files index.cgi?op=adminpanel>
order deny,allow
deny from all
allow from my.ip.address
</files>

但不起作用,当我使用<files index.cgi></files>但是整个网站除了我的ip之外的所有人都有403错误

现在我正在测试:

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !( my.IP)
RewriteCond %{QUERY_STRING} !(?op=adminpanel)
RewriteRule index.cgi - [F] 

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

this article你可以这样做:

假设您要阻止IP地址123.255.123.255访问页面www.mydomain.com/index.php?option=com_my_special_component。以下是编写规则的方法:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^123\.255\.123\.255
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC]
RewriteRule ^(.*)$ index.php [F,L]

第一行只是打开URL重写。在这种情况下,如果选项= com_my_special_component进来的URL的任何地方它会匹配 - 第二行中的IP地址(每个点前使用反斜杠),第三行相匹配的查询字符串(?即东西后,自带的URL)匹配之后 ? (例如,index.php?id = 1&amp; option = com_my_special_component&amp; action = dostuff仍将与此规则匹配)。无论URL中的任何字符是大写还是小写,该行末尾的[NC]都会告诉它应用规则。最后一行使用'forbidden'标题将用户重定向到index.php - 因此他们将在浏览器中收到错误消息,并告诉mod_rewrite停止解释任何进一步的重写规则。

如果要禁止多个IP地址,可以为它们添加新行,但是需要在每行的末尾添加[OR]标记,除了最后一行 - 例如:

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^123\.255\.123\.255 [OR]
RewriteCond %{REMOTE_ADDR} ^124\.255\.124\.255 [OR]
RewriteCond %{REMOTE_ADDR} ^125\.255\.125\.255
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC]
RewriteRule ^(.*)$ index.php [F,L]

由于您可以阻止访问管理页面,因此您可能只想允许自己的IP。在这种情况下,你只需在IP地址前放一个感叹号,说明它是否是除此之外的任何IP,然后重写。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123\.255\.123\.255
RewriteCond %{REMOTE_ADDR} !^124\.255\.124\.255
RewriteCond %{REMOTE_ADDR} !^125\.255\.125\.255
RewriteCond %{QUERY_STRING} option=com_my_special_component [NC]
RewriteRule ^(.*)$ index.php [F,L]

希望有所帮助。

答案 1 :(得分:0)

在.htaccess文件中尝试此操作:

Emph x

参考:pandoc filter

您可以将此行(Str "/" <> x <> Str "/"))更改为:

RewriteEngine On RewriteCond %{REQUEST_URI} ^/admin RewriteCond %{REMOTE_ADDR} !=10.0.0.1 RewriteCond %{REMOTE_ADDR} !=10.0.0.2 RewriteCond %{REMOTE_ADDR} !=10.0.0.3 RewriteRule ^(.*)$ - [R=403,L] if the url begins with /admin and the remote address is not one of the three listed, send the browser on its merry way.

非常网址包含“/ admin”。