htaccess 从 url 中删除参数
Posted
技术标签:
【中文标题】htaccess 从 url 中删除参数【英文标题】:htaccess remove the parameter from url 【发布时间】:2016-10-09 21:55:47 【问题描述】:我正在尝试从 url 中删除某些 url 参数。这些参数不再对显示的内容产生影响,但谷歌已经将其中的一堆编入索引。
我想将它们重定向到基本网址。 以下是示例。
来自www.myexamplesite.com/?start=10
收件人:www.myexamplesite.com
来自www.myexamplesite.com/folder1/?start=10
收件人:www.myexamplesite.com/folder1
来自www.myexamplesite.com/folder2/?start=10
收件人:www.myexamplesite.com/folder2
实际上我不需要任何带参数的 url,所以我想知道是否有办法从 url 中捕获和重定向所有其他可能的参数,并且只允许我将在 htaccess 中指定的一些选定参数.
示例:
来自www.myexamplesite.com/?param1=10
收件人:www.myexamplesite.com
来自www.myexamplesite.com/?param1=10&param2=20
收件人:www.myexamplesite.com
来自www.myexamplesite.com/folder1/?param1=10
收件人:www.myexamplesite.com/folder1
来自www.myexamplesite.com/folder1/?param1=10&param2=20
收件人:www.myexamplesite.com/folder1
但是对于应该是我选择的 param3:
来自www.myexamplesite.com/folder1/?param3=10
保持不变:www.myexamplesite.com/folder1/?param3=10
更新 我实际上已经实现了一个解决方案,但我的主要问题是它总是重定向到主页而不是适当的 REQUEST_URI ...
这是我所拥有的:
RewriteCond %QUERY_STRING .
RewriteCond %QUERY_STRING !^item=
RewriteCond %REQUEST_URI !^/manage
RewriteRule .? http://www.myexamplesite.com%REQUEST_URI? [R=301,L]
【问题讨论】:
【参考方案1】:您可以使用此规则去除所有查询字符串,除非在其中找到 param3=
。
RewriteEngine On
RewriteCond %QUERY_STRING .
RewriteCond %QUERY_STRING !(?:^|&)param3= [NC]
RewriteRule ^ %REQUEST_URI? [R=301,L,NE]
【讨论】:
以上是关于htaccess 从 url 中删除参数的主要内容,如果未能解决你的问题,请参考以下文章
htaccess:从缺少值的查询字符串中删除 URL 参数?
.htaccess 删除 index.php 并从 URL 中隐藏参数键