我认为我试图做的是天才,但它似乎无法正常工作。
我有一个包含临时文件的公共子域。我不希望人们在访问它时看到列出的所有文件。我不想密码保护它,因为当从服务器上取文件时会弄乱几个脚本,我不希望那里的空白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=dir
或files.example.com/#dir
则不会;显然,由于?show=dir
什么都不做,它会像往常一样列出我的所有文件。
我的RewriteConditions
无效。
这可能吗?
答案 0 :(得分:2)
首先,您无法匹配URL片段(#dir
部分),因为它不会被发送到服务器。这只是客户方面的事情。
其次,您无法与?show=dir
变量中的查询字符串(%{REQUEST_URI}
部分)匹配,而是需要使用%{QUERY_STRING}
。
所以试试:
RewriteEngine On
RewriteCond %{QUERY_STRING} !^show=dir$
RewriteRule ^$ http://example.com/ [nc]