【发布时间】:2014-02-15 06:21:41
【问题描述】:
我需要阻止看起来像 www.domain.com/admin/login/ 的特定 URL?使用 htaccess 并授予仅访问特定 IP 地址的 url 的权限。
我们已经尝试过了,它部分有效。这 ”?”在 URL 中似乎有问题。当我包括 ?在 htaccess 以及如下所示的 URL 中,它不会按照所需的方式工作。我在这里做错了什么?
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=xxx\.xxx\.xxx\.xxx
RewriteRule admin/login/?$ / [R=301,L]
更新:
我有一个自定义 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。在服务器上安装 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>
【问题讨论】:
-
获取
指令的内部服务器错误 -
什么样的“内部错误”?
<Location>就是为此而设计的。
标签: apache .htaccess mod-rewrite redirect