您好我一直在网上搜索此答案,但我找不到。我希望使用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。
非常感谢任何帮助,谢谢。
答案 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)
# 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