如何通过.htaccess将带?w=参数的页面重定向至主页?
解决.htaccess带参数URL重定向至主域名的问题
你之前的规则出错是因为RewriteRule默认只匹配URL的路径部分(域名之后、?之前的内容),不包含查询字符串。直接写^?w=(.*)会导致服务器解析规则时出错,从而返回400状态码。
下面是两种符合需求的正确规则:
永久重定向(地址栏显示example.com)
如果希望用户访问example.com/?w=xxx时,地址栏自动跳转到example.com,用301永久重定向规则:
RewriteEngine On # 匹配查询字符串中以w=开头的情况 RewriteCond %{QUERY_STRING} ^w=.+$ # 重定向到根目录并清空查询参数 RewriteRule ^$ /? [R=301,L]
RewriteCond %{QUERY_STRING} ^w=.+$:精准匹配查询字符串以w=开头且包含后续内容的请求/?:末尾的?用来清空查询字符串,避免重定向后还保留w参数R=301:标记为永久重定向,利于搜索引擎优化;如果只是临时重定向可以改成R=302L:表示执行完这条规则后停止处理后续规则
内部重写(地址栏保持原URL)
如果不需要改变地址栏,只是内部将请求转发到index.php,用以下规则:
RewriteEngine On RewriteCond %{QUERY_STRING} ^w=.+$ RewriteRule ^$ index.php [L]
注意事项
- 确认服务器已启用
mod_rewrite模块(Apache默认通常开启,若未开启需在服务器配置中启用) .htaccess文件需放置在网站的根目录下- 测试301重定向时,建议清空浏览器缓存,避免旧缓存影响测试结果
内容的提问来源于stack exchange,提问作者Matfish
相关产品推荐
相关产品推荐

