.htaccess从url中删除特定的get参数

时间:2013-01-09 20:25:39

标签: .htaccess

您好我一直在网上搜索此答案,但我找不到。我希望使用htaccess从URL中删除特定参数。

例如,我有以下网址:

www.mysite.com/product.php?product_id=123&session=sdfs98d7fs9f8d7
www.mysite.com/anotherurl.php?session=12312341341&someotherparam=123

我需要他们301重定向到:

www.mysite.com/product.php?product_id=123
www.mysite.com/anotherurl.php?someotherparam=123

请注意,上面的网址只是示例。我需要从任何和所有网址中删除会话参数,无论网址中有多少个参数或会话所在的位置。

我想我需要一种方法,直到session = blah的url字符串和session = blah之后的url字符串,然后组合两个部分并重定向到新的url。

非常感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:1)

<强>已更新

简而言之,您想要的只是从查询中删除键值对session=xx

这是一个选项:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{QUERY_STRING}  (.*)?&?session=[^&]+&?(.*)?  [NC]
RewriteCond %{REQUEST_URI} /(.*)
RewriteRule .*  %3?%1%2? [R=301,L]

答案 1 :(得分:1)

我在another site

上找到了解决方案
# case: leading and trailing parameters
RewriteCond %{QUERY_STRING} ^(.+)&session=[0-9a-z]+&(.+)$ [NC]
RewriteRule (.*) /$1?%1&%2 [R=301,L]

# case: leading-only, trailing-only or no additional parameters
RewriteCond %{QUERY_STRING} ^(.+)&session=[0-9a-z]+$|^osCsid=[0-9a-z]+&?(.*)$ [NC]
RewriteRule (.*) /$1?%1 [R=301,L]

答案 2 :(得分:0)

未经测试,但应该有效:

RewriteCond %{QUERY_STRING} product_id=([0-9]+)
RewriteRule .* product.php?product_id=%1