我正在使用没有认证模块的Expression Engine 2 Freelancer editon。尝试使用htaccess密码保护URL
我想密码保护,有一个虚拟目录www.domain.com/template模板组
我所要做的是使用htaccess的根迫使人们进入用户名和密码,当他们尝试导航到“模板”部分及其下的两个文件时。
表达式引擎处理模板的方式被路由到物理目录而不是物理目录。
我的问题是我如何密码保护这个网址,我试过使用LocationMatch,但它没有工作?
感谢
我正在使用没有认证模块的Expression Engine 2 Freelancer editon。尝试使用htaccess密码保护URL
我想密码保护,有一个虚拟目录www.domain.com/template模板组
我所要做的是使用htaccess的根迫使人们进入用户名和密码,当他们尝试导航到“模板”部分及其下的两个文件时。
表达式引擎处理模板的方式被路由到物理目录而不是物理目录。
我的问题是我如何密码保护这个网址,我试过使用LocationMatch,但它没有工作?
感谢
你不能有效地保护mod_rewritten URL(如果有可能的话)。攻击者只需访问被保护的URL被重写到的物理位置 - 在这种情况下,您将离开不受保护的位置。
我想,你仍然必须在PHP方面做到这一点。如果您的PHP作为Apache模块运行,应该可以检查请求的资源是否属于受保护的目录(通过QUERY_STRING
或其他指示符),然后发送请求验证的正确标头,如在PHP手册中描述的here 。
从URL中删除index.php
的哪种方法正在使用?
如果您使用的是“File and Directory Check”的方法,你可以修改已有Apache mod_rewrite
规则,排除某个目录,同时还允许所有其他请求直通index.php
运行。
例如,使用基地“文件和目录检查”重写规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
使用这种方法,阿帕奇检查,看是否存在文件或目录 - 如果它的文件送达浏览器;如果它不存在,则通过index.php
发送并解析为ExpressionEngine URI。
要排除目录,加入你的.htaccess基本身份验证password-protected directory修改重写规则:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(secret-directory|secret-directory/.*)$
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>
我不完全知道什么所有的限制都与自由职业者许可,但我answered a similar question about password-protecting pages in ExpressionEngine这可能会证明对您的情况有帮助。
最好在ServerFault上解答。 – 2011-05-23 12:27:10