1

我以为我想做的是天才,但它似乎无法正常工作。

我有一个带有临时文件的公共子域。我不希望人们在访问它时能够看到列出的所有文件。我不想用密码保护它,因为这会在从服务器上获取文件时弄乱几个脚本,而且我不希望那里的空白 index.html 停止列出,因为我希望能够看到列表。

所以我的天才之举是有一个.htaccess像这样的文件:

RewriteEngine On
RewriteCond %{REQUEST_URI} !/#dir
RewriteCond %{REQUEST_URI} !/?show=dir
RewriteRule ^$ http://example.com/ [nc]

我的理论是访问files.example.com会重定向到example.com但访问files.example.com/?show=dirfiles.example.com/#dir不会访问;显然,由于?show=dir什么都不做,它会正常列出我的所有文件。

RewriteConditions的虽然没有效果。

这可能吗?

4

1 回答 1

2

首先,您无法匹配 URL 片段(#dir部分),因为它永远不会发送到服务器。这只是客户端的事情。

其次,不能匹配变量中的查询字符串(?show=dir部分)%{REQUEST_URI},需要%{QUERY_STRING}改用。

所以试试:

RewriteEngine On
RewriteCond %{QUERY_STRING} !^show=dir$
RewriteRule ^$ http://example.com/ [nc]
于 2013-04-23T19:44:33.027 回答