taf*_*ita 3 regex .htaccess mod-rewrite redirect
我正在尝试从 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¶m2=20
至:www.myexamplesite.com
从www.myexamplesite.com/folder1/?param1=10
至:www.myexamplesite.com/folder1
从www.myexamplesite.com/folder1/?param1=10¶m2=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]
Run Code Online (Sandbox Code Playgroud)
您可以使用此规则去除所有查询字符串,除非在其中param3=找到。
RewriteEngine On
RewriteCond %{QUERY_STRING} .
RewriteCond %{QUERY_STRING} !(?:^|&)param3= [NC]
RewriteRule ^ %{REQUEST_URI}? [R=301,L,NE]
Run Code Online (Sandbox Code Playgroud)