#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;