【问题标题】:How to allow access to a sub-folder and its contents, but not its parent folder and contents?如何允许访问子文件夹及其内容,但不允许访问其父文件夹和内容?
【发布时间】:2013-12-03 23:38:48
【问题描述】:

我正在努力理解 .htaccess 规则,我正在深入了解这个规则!

我有一个网站在服务器上的布局如下:

www.domain.com/mysite

现在,我需要允许访问以下内容:

www.domain.com/mysite/admin(以及“admin”文件夹中的所有内容)

但是,阻止访问:

www.domain.com/mysite (以及所有内容,除了匹配的 “管理员”文件夹)

到目前为止,我有这个:

重定向匹配 ^/admin/?(.*) http://www.domain.com/mysite/admin/$1

重定向匹配 ^/(?!admin)/?(.*) http://www.domain2.com/$1

但它似乎不起作用?

【问题讨论】:

  • 我不确定,但您不应该简单地将“限制”htaccess 放在父文件夹中,然后将“授权”htaccess 放在您希望授予访问权限的子文件夹中吗?
  • 我正在使用 1 个 htaccess 文件,位于“mysite”文件夹中。你的意思是我应该使用 2 个单独的文件?
  • 我想是的,但我不是专家。我认为 htaccess 文件存在某种“级联”:首先系统查找指定目录,然后查找父目录,依此类推,因此您可以非常准确地使用安全规则。现在我可能完全错了,但这是一个开始......

标签: regex apache .htaccess mod-rewrite


【解决方案1】:

将此代码放入您的DOCUMENT_ROOT/mysite/.htaccess 文件中:

RewriteEngine On
RewriteBase /mysite/

RewriteRule ^((?!admin(?:/|$)).*)$ http://www.domain2.com/$1 [L,R]

(?!...) is the syntax for negative lookahead
(?:..) is the syntax for non-capturing group
(?!admin(?:/|$)) matches anything that is not starting from admin/ Or admin$

【讨论】:

  • 似乎有效,非常感谢!你知道关于 htaccess 的任何非常好的文章/教程/等吗?我似乎无法理解它!
  • 不客气。我只是按照官方手册:httpd.apache.org/docs/current/rewrite/intro.html 剩下的就是学习正则表达式
  • 只是补充一下-您能简要解释一下正则表达式部分吗?我尝试将它放入正则表达式测试器中,并且它总是将 URL 与其中的“admin”匹配,当它清楚地让它通过时
  • 如果这个答案帮助您解决了问题,请考虑将其标记为“已接受”,以便以后遇到类似问题的用户能够轻松看到。
  • 抱歉,已接受回答 :) 另外,感谢您添加一些解释!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-31
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多