我遇到了问题,我想使用.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]
任何帮助将不胜感激
答案 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
您可以将此行(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”。