我想通过htaccess保护www.somedomain /?data& some-url并让www.somedomain正常工作,但是当直接或通过链接访问该URL时,htaccess会保护它。
有可能吗?
细..
让这个“更容易”
我的htaccess文件就是这个,但它无法正常工作
<files ?some&data>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /dir/passwd
require valid-user
</files>
答案 0 :(得分:1)
我建议使用解决方法:您可以使用.htaccess将该特定路径(/?data&amp; some-url)重定向到.htaccess受保护的虚拟文件夹.e.g / myproctedtforlder /。 Prix提到了QUERY_STRING条件。我用完整的细节修改了我的答案。首先要做的是将index.php重命名为你想要的任何名称,在这种情况下我使用了index2.php。
所以你的主页面.htaccess将包含以下这些行:
RewriteCond %{QUERY_STRING} data&some-url
RewriteRule ^$ /myprotectedfolder/ [QSA,L]
RewriteCond %{REQUEST_FILENAME} !\.(gif|png|jpg|jpeg|jfif|bmp|css|js|txt|xml)$ [NC]
RewriteCond %{QUERY_STRING} ^.*$
RewriteRule ^$ index2.php [QSA,L]
RewriteRule ^index\.php$ index2.php [QSA,L]
然后你的受保护文件夹(/ myprotectedfolder /).htaccess看起来像:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/username/myprotectedfolder/.htpasswd
require valid-user
我没有提供有关.htpassword的更多详细信息,您可以在此处找到许多示例:http://davidwalsh.name/password-protect-directory-using-htaccess。 在下面提供的“回答”简单详细信息中,您应该注意,在标记中,您应该提供文件名格式(例如index。(php | html))而不是查询字符串。在您的情况下,您提供查询字符串。所以这不是开始。你能否删除那个'答案'并把它作为评论?
答案 1 :(得分:1)
答案 2 :(得分:0)
以下是如何为特定查询字符串显示身份验证对话框。
RewriteEngine On
RewriteBase /
## force BASIC auth for a specific query parameter
#set PSSWD_NEEDED var to 1 if query string is matched
RewriteCond %{QUERY_STRING} (?:^|&)data&some-url(?:&|$) [NC]
RewriteRule ^(index\.php)?/?$ index.php/%{QUERY_STRING} [L]
# set PSSWD_NEEDED var to 1 if URI is /index.php/...
SetEnvIfNoCase Request_URI "^/index\.php/data&some-url" PSSWD_NEEDED
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /dir/passwd
require valid-user
Order allow,deny
Allow from all
Deny from env=PSSWD_NEEDED
Satisfy any