假设 Web 服务器(Apache)上有以下文件夹结构:
https://somedomain.com/parentfolder/childfolder
。
使用.htaccess
,我希望childfolder
仅显示 URL 包含特定参数的页面及其任何子项(文件和文件夹)。例如,如果以下用户请求该页面,则应显示该页面:
https://somedomain.com/parentfolder/childfolder?secretparameter=secretvalue123
但是如果
- 参数的值
secretparameter
不完全secretvalue123
或 secretparameter
缺少参数,
那么应该返回 404 错误。
您是否知道 .htaccess 规则应该如何实现这一点?非常感谢您的帮助,谢谢。
答案1
secretparameter=secretvalue123
因此,如果在请求资源时查询字符串不在,则发出 404 未找到。您可以使用 mod_rewrite 在文档根目录中的文件childfolder
顶部执行类似以下操作:.htaccess
RewriteEngine On
RewriteCond %{QUERY_STRING} !=secretparameter=secretvalue123
RewriteRule ^parentfolder/childfolder - [R=404]
如果查询字符串不完全等于,则会阻止请求。(指定非 3xx 代码时,此处secretparameter=secretvalue123
不需要标志,因为它是隐含的。)L
RewriteRule
如果您将这些指令放在要保护的子目录中,则可以稍微简化一下/parentfolder/childfolder/.htaccess
。例如:
RewriteRule ^ - [R=404]