如果您使用 Apache 的 .htaccess 配置文件来禁止或允许某些用户访问特定的文件或文件夹,则可能会遇到以下问题:如果在允许或禁止特定的查询字符串之后,查询字符串将被阻止,但是该文件夹中的文件似乎不再显示。这个问题是由于 Apache 配置文件缺少一个重要的指令 'Options -Indexes'。
您可以使用以下代码片段来修复此问题:
RewriteEngine On
# Prevent direct file access
Options -Indexes
# Allow access with specific query string
RewriteCond %{QUERY_STRING} ^id=123$
RewriteRule ^folder/access\.php$ - [L]
# Deny access with specific query string
RewriteCond %{QUERY_STRING} ^id=456$
RewriteRule ^folder/access\.php$ - [F,L]
在这个片段中,我们首先添加了 'Options -Indexes' 指令,以禁止直接访问文件。然后,我们使用 RewriteCond 和 RewriteRule 指令来允许或拒绝带有特定查询字符串的访问。
请注意,'RewriteRule ^folder/access.php$ - [L]' 中的'-'表示没有重写规则,而 '[L]' 表示这是最后一个规则,因此不应再尝试其他规则。
您可以根据自己的需要修改这些规则,例如设置不同的查询字符串,或者允许访问文件夹中的其他文件。