使用 .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 以仅删除一个 php 文件的 $_GET 查询[重复]