有没有办法htaccess密码保护www.somedomain/?data&some-url


Is there a way to htaccess password protect www.somedomain/?data&some-url?

我想保护www.somedomain/?data&some-url与htaccess,让www.somedomain工作良好,但当访问该URL直接或从链接,htaccess保护它。

有可能吗?


好. .

让我们让这个"更简单"

我的htaccess文件是这样的,但它不起作用

<files ?some&data>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /dir/passwd
require valid-user
</files>

我建议一个解决方法:您可以使用。htaccess将该特定路径(/?data&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:这是那篇文章的链接

我可以在这里写一些文本,并提到来源但有些文本可能对所有人都没有帮助

下面是显示特定查询字符串的验证对话框的方法。

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