HOW TO:使用htaccess将url限制为特定的IP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HOW TO:使用htaccess将url限制为特定的IP相关的知识,希望对你有一定的参考价值。

我需要阻止一个看起来像www.domain.com/admin/login/的特定网址?使用htaccess和grant权限仅访问特定IP地址的URL。

我们已经尝试过这个并且部分有效。 “?”在URL中似乎给出了问题。当我包括?在htaccess中以及如下所示的URL,它将无法按照它的工作方式工作。我在这做错了什么?

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
RewriteRule admin/login/?$ / [R=301,L]

Existing htaccess

更新:我有一个自定义CMS,它没有典型的树结构,即http://www.mysite.com/folder/var/www/folder不对应,实际上http://www.mysite.com/folder根本没有单个文件或目录表示。因此,/folder没有相应的.htaccess文件。我没有看到如何将URL而不是目录附加到重写规则。以下是我一直在玩的重写概念:

这会有用吗?我在网上发现了这个:

<Location /folder>
Order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
</Location>

更新#2:问题已经解决。问题是由于我使用Cloudflare的原因。这使得所有来自cloudflare的URL请求。在服务器上安装mod_cloudflare并使用下面的脚本后,我成功地阻止了对公共的访问,只允许指定的IP。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} ^(.*)admin(.*)$
RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
RewriteRule .* / [R=302,L]
</IfModule>
答案

此规则应用于阻止该URL:

RewriteEngine on

RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
RewriteRule ^admin/login/? - [F,NC]

更新:将此代码放在/admin/.htaccess中:

RewriteEngine on

RewriteCond %{REMOTE_ADDR} !^xxx.xxx.xxx.xxx$
RewriteRule ^login/? - [F,NC]
另一答案
# only allow acces to these urls from white listed IPs
Options +FollowSymlinks
RewriteEngine on
#the urls that should be checked
RewriteCond %{REQUEST_URI} ^(/login|/wp-login.php|/wp-admin).*$
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
# or this ip
RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx
# if not fail
RewriteRule ^.*$ / [F]
另一答案

?是一个特殊的正则表达式字符,所以你必须用反斜杠来逃避它:?

另一答案

在.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]

如果网址以/ admin开头且远程地址不是列出的三个地址之一,请以愉快的方式发送浏览器。

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

另一答案

为什么不使用Location

<Location /admin/login>
    Order deny,allow
    Deny from all
    Allow from xxx.xxx.
    Allow from yyy.yyy.
</Location>

以上是关于HOW TO:使用htaccess将url限制为特定的IP的主要内容,如果未能解决你的问题,请参考以下文章

友好的 URL htaccess 重写规则正则表达式 [关闭]

sh 如何使用bash或curl将数据urlencode到URL中 - 来自https://stackoverflow.com/questions/37309551/how-to-urlencode-

How to configure Spring Security to allow Swagger URL to be accessed without authentication

How Many to Be Happy?

将 NSString 转换为特定于语言环境的 NSNumber

使用 htaccess 和 GeoIP 阻止特殊地址或 URL 的国家/地区