1

我有一个问题,我想使用 .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] 

任何帮助将不胜感激

4

2 回答 2

3

根据这篇文章,您可以这样做:

假设您要阻止 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 重写。第二行匹配 IP 地址(在每个点之前使用反斜杠),第三行匹配查询字符串(即 URL 中 ? 之后的任何内容) - 在这种情况下,如果 option=com_my_special_component 出现在 URL 中的任何位置,它将匹配之后 ?(例如 index.php?id=1&option=com_my_special_component&action=dostuff 仍然符合此规则)。该行末尾的 [NC] 告诉它应用规则,无论 URL 中的任何字符是大写还是小写。最后一行将用户重定向到带有“禁止”标头的 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]

希望有帮助。

于 2013-08-20T01:14:11.007 回答
0

在 .htaccess 文件中试试这个:

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.

参考:https ://www.concrete5.org/community/forums/chat/restrict-urls-starting-with-abc-to-specific-ips-.htaccess-guru

您可以将此行 ( RewriteCond %{REQUEST_URI} ^/admin) 更改为:

RewriteCond %{REQUEST_URI} .*/admin

对于非常 url 包含“/admin”。

于 2017-01-14T13:06:22.843 回答