【发布时间】:2010-07-15 10:00:38
【问题描述】:
我有一个 CakePHP 应用程序,我想用密码保护它。棘手的是,所有文件/位置都只能通过密码访问,除了一个特定的地址(一个带有 CakePHP 控制器的函数)
地址是这样的:
http://example.com/MyApp/MyController/MyFunction?MyParam=MyValue
所有其他位置只能通过密码访问
http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyController/MyOtherFunction
http://example.com/MyApp/MyOtherController/MyOtherFunction
好吧,我首先在根 .htaccess-File 中尝试过,但是 CakePHP 的整个重写使得它变得非常困难,并且在 .htaccess-Files 中不允许使用 <LocationMatch> 指令。所以我用<FilesMatch>试了一下,但真正的文件总是一样的:index.php。 mod_rewrite 将所有地址重写为
在下一步中,我在 apache-configuration 中进行了尝试,并将此部分放在那里
<LocationMatch ^/MyApp/MyController/MyFunction.*>
AuthType Basic
AuthName "Secure Area"
AuthUserFile /path/to/.htpasswd
Require user MyUser
</LocationMatch>
好吧,正则表达式匹配,但它是错误的方式。它保护 MyFunction 但不保护其余部分。
【问题讨论】:
-
我认为你只需要反转你的正则表达式模式的含义。我找不到这样做的简单方法,尽管插入符号似乎意味着“从字符串开头匹配”和“反转模式”。我只是不是 100% 确定反转模式的语法。
标签: apache .htaccess cakephp password-protection locationmatch