使用 .htaccess 从 URL 末尾删除查询字符串

Posted

技术标签:

【中文标题】使用 .htaccess 从 URL 末尾删除查询字符串【英文标题】:remove query string from end of URL using .htaccess 【发布时间】:2012-12-13 20:18:50 【问题描述】:

我正在尝试从 URL 末尾删除字符串:

例如我有这样的结构:

http://sitename.com/category/first-category-name/?post_type=question
http://sitename.com/category/second-category-name/?post_type=question
http://sitename.com/category/...-category-name/?post_type=question

我想从 URL 的末尾删除 ?post_type=question

我在***上找到了很多例子,但没有一个适合我。

谢谢。

【问题讨论】:

查看如何使用 htaccess helponnet.com/2021/06/07/… 删除 URL 查询字符串的特定部分 【参考方案1】:

很简单,只需使用:

RewriteCond %QUERY_STRING    "post_type=" [NC]
RewriteRule (.*)  /$1? [R=301,L]

如果您要将其添加到 wordpress 网站,您需要在任何 wordpress 规则之前添加它:

RewriteRule ^index\.php$ - [L]
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]

但是在

之后
RewriteBase /

【讨论】:

【参考方案2】:

只要做这样的事情:

RewriteEngine On
RewriteBase /
# Make sure there is a query string
RewriteCond %QUERY_STRING .
RewriteCond %REQUEST_FILENAME !-d
RewriteRule .*  /? [R=301,L]

在末尾放置 ? 以删除存在的查询。

【讨论】:

以上是关于使用 .htaccess 从 URL 末尾删除查询字符串的主要内容,如果未能解决你的问题,请参考以下文章

Htaccess:从URL添加/删除尾部斜杠

htaccess:从缺少值的查询字符串中删除 URL 参数?

使用 .htaccess 编辑 url 并删除查询名称 [关闭]

htaccess 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]

.htaccess 漂亮的 URL 不包括 index.php 并在末尾添加尾随 /

使用 htaccess 从 URL 中删除 .php