首页 > 解决方案 > 限制对特定 url htaccess 的访问

问题描述

我需要限制对这个特定域的访问:

mydomain.com/wp-admin

我试过这段代码但没有用

RewriteRule ^wp-admin(?!/something\.php/allow/this/uri/?$) - [F,L,NC]

请问我该怎么做?

标签: phpwordpress.htaccess

解决方案


单一IP地址访问

要允许从单个 IP 地址访问,请替换123\.123\.123\.123为您自己的 IP 地址:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [R=403,L]

多IP地址访问

您可以检查您的 IP 以获取您计算机的 IP 地址

要允许从多个 IP 地址访问,请替换123\.123\.123\.xxx为您自己的 IP 地址:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.121$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.122$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [R=403,L]

动态IP地址访问,由referer限制

如果您的 IP 地址发生变化,您可以通过只允许直接来自您的域名的登录请求来保护您的 WordPress 站点。只需替换example\.com为您自己的域名

大多数蛮力攻击依赖于直接POST向您的wp-login.php脚本发送请求。因此,要求POST将您的域作为推荐人可以帮助清除机器人。

RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?example\.com [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]

等待至少15-20 分钟,然后尝试再次登录您的 WordPress 站点。如果您尝试在块的15 分钟窗口内访问 WordPress 仪表板,这可能会延长块。在尝试再次访问您的 WordPress 站点之前,请务必等待上一个块过期并耐心等待。

资源

对于你的情况,如果你想限制它url yourdomainname.com/wp-admin,使用这个:

<files wp-login.php>
# set up rule order
order deny,allow
# default deny
deny from all
allow from x.x.x.x
allow from y.y.y.y
allow from z.z.z.z
</files>

 ErrorDocument 401 default
 ErrorDocument 403 default
 ErrorDocument 404 default

推荐阅读