htaccess:如果 url 参数缺失或无效,如何重定向到 404?

htaccess:如果 url 参数缺失或无效,如何重定向到 404?

假设 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]

相关内容