如何通过.htaccess规则仅对首页查询字符串返回404
仅禁用首页查询字符串的.htaccess配置方案
要实现仅对首页(根路径/或/index.php)带任意查询字符串的请求返回404,同时不影响其他页面(子目录、wp-admin、JS/CSS等静态资源)的查询字符串使用,你可以使用以下精确匹配的Rewrite规则:
# 拦截首页带查询字符串的请求并返回404 RewriteCond %{QUERY_STRING} .+ RewriteCond %{REQUEST_URI} ^(/index\.php)?$ RewriteRule ^ - [R=404,L]
规则说明
RewriteCond %{QUERY_STRING} .+:仅匹配存在非空查询字符串的请求(.+确保查询字符串至少有一个字符)RewriteCond %{REQUEST_URI} ^(/index\.php)?$:严格限定请求的URI只能是根路径/,或者根路径下的/index.php(?表示前面的分组是可选的)RewriteRule ^ - [R=404,L]:对同时满足上面两个条件的请求,直接返回404状态码,L标记表示终止后续规则的处理,避免冲突
注意事项
- 如果是WordPress站点,务必将这条规则放在
# BEGIN WordPress注释块之前,防止被WordPress默认的Rewrite规则覆盖 - 测试验证:访问
https://example.com/?s=test或https://example.com/index.php?foo=bar应该返回404;访问https://example.com/wp-admin/?page=options或https://example.com/css/style.css?v=2.0则能正常加载
内容的提问来源于stack exchange,提问作者Dhon Collera
相关产品推荐
相关产品推荐

