Перенаправление на основе запроса

#perl

#perl

Вопрос:

У меня есть следующий код:

 my $uri=$ENV{'REQUEST_URI'};
if ($uri=~//?render=xml){
 redirect(301,"Moved Permanently","urlsubstring");
}
  

Чего я пытаюсь добиться, так это того, что если пользователь переходит в любое место на моем сайте, если страница выглядит так, http://wwww.something.com/about/?render=xml мы выполняем перенаправление на URL без render=xml portion . Как вы можете видеть, меня интересует render=xml часть запроса скрипта.

Итак,

мне нужно обновить логику для выполнения перенаправления, и тогда мне понадобится подстрока, основанная на позиции ?render=xml против url .

Вот мой код подстроки:

 $pos = index($uri,"?render=xml");
$newuri = substr($uri,0,$pos);
  

Я очень новичок в perl, поэтому я просто ищу какую-нибудь помощь

Ответ №1:

во-первых, вы не завершили свой шаблон поиска.

 my $uri=$ENV{'REQUEST_URI'};
if ($uri=~//?render=xml/){
 redirect(301,"Moved Permanently","urlsubstring");
}
  

но вы можете просто выполнить прямой поиск и заменить.
попробуйте это.

     $uri = "http://www.something.com/about/?render=xml";
    $uri =~ s/?render=xml/newurlstring/g;
    print $uri
  

Непроверенный, но у вас, скорее всего, будет что-то подобное в качестве вашего кода.

 my $uri=$ENV{'REQUEST_URI'};
$uri =~ s/?render=xml/newurlstring/g;
  

который вернет $uri какhttp://www.something.com/about/newurlstring

или, если вы просто хотите сбросить часть ?render=xml и использовать только $uri какhttp://www.something.com/about /

 my $uri=$ENV{'REQUEST_URI'};
$uri =~ s/?render=xml//g;
  

Комментарии:

1. забыл добавить это, если вы хотите избежать первого / вы должны сделать $uri =~ s//?render=xml//g;