首页 > 解决方案 > 将规则重定向到 php 查询,但删除请求的 url 中的任何查询字符串

问题描述

我的 url 正在使用 .htaccess 重定向,如下所示:

RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1

友好的 url -> 转换为 php url

domain.com/b/hello/2 -> b/view.php?id=2&name=hello

但是当有人以如下方式访问该站点时:

domain.com/b/hello/2?query=xyz

我不知道如何摆脱?query=xyz

我已经尝试了包括 [QSD] 在内的所有方法,但我似乎无法让它工作。

更新

我已经设法让它与以下内容一起工作,但它做了两个 301 重定向而不是一个:

RewriteCond %{THE_REQUEST} \?[^\ ]+
RewriteRule ^b/(.*)$ /x/$1? [R=301,L]
RewriteRule ^b/([^/]+)/([^/]+)/([^/]+)?$ b/view.php?id=$2&&name=$1

标签: php.htaccess

解决方案


检查在规则末尾添加问号是否会取消从左侧附加的查询字符串

RewriteRule ^b/([^/]+)/([^/]+)? b/view.php?id=$2&name=$1? [QSD,L]

推荐阅读