Удаление части строки в строке запроса в URL - PullRequest
0 голосов
/ 01 августа 2011

У меня есть входной URL, который выглядит примерно так:

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

При перенаправлении этого на новый URL, мне нужно найти и удалить все вхождения «$ @!»из последней части URL, так что он становится:

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

Примечание: Последняя часть может быть чем угодно, а не просто B$@!00$@!4JPPO94$@!.Кроме того, позиция $@! может быть где угодно в этой последней части.

Ответы [ 2 ]

3 голосов
/ 01 августа 2011

Используя mod_rewrite, вам просто нужно это правило:

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

Редактировать:

На самом деле, существует проблема, когда $@! находится в конце URI.Кажется, добавление дополнительного правила для удаления завершающего совпадения:

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

Не совсем уверен, почему это произошло.

1 голос
/ 01 августа 2011

Если вы используете php, вы можете сделать следующее:

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

Изменить: обновлен код, чтобы стать динамическим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...