删除URL中查询字符串中的部分字符串

时间:2011-08-01 07:46:57

标签: apache .htaccess mod-rewrite

我的输入网址如下所示:

http://localhost/20north/Numark/product/1/B$@!00$@!4JPPO94$@!

在将其重定向到新网址时,我需要找到并删除所有出现的“$ @!”从网址的最后一部分开始,它变为:

http://localhost/20north/Numark/product/1/B004JPPO94

注意:最后一部分可以是任何内容,而不只是B$@!00$@!4JPPO94$@!。此外,$@!的位置可以位于最后一部分的任何位置。

2 个答案:

答案 0 :(得分:3)

使用mod_rewrite,您只需要这条规则:

RewriteRule ^(.*)\$@!(.*)$ $1$2 [N]

编辑:

实际上,当$@!位于URI的末尾时似乎存在问题。添加一个额外的规则来删除尾随匹配似乎解决了它:

RewriteRule ^(.*)\$@!$ $1
RewriteRule ^(.*)\$@!(.*)$ $1$2 [N]

不太确定为什么会这样。

答案 1 :(得分:1)

如果您使用的是php,则可以执行以下操作:

<?php 
    $this_url = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
    if( strpos($this_url, '$@!') !== false ) 
       die(header('Location: ' . str_replace('$@!', '', $this_url))); 
?>

编辑:更新代码以变为动态