我正在寻找PHP代码来查找URL末尾是否有多个斜杠(/)。例如,我想要一个具有以下结构的if条件:
$requesturl = $_SERVER['PATH_INFO']
if ( <condition> ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: <url>");
}
我正在寻找条件和 url 代码。条件需要在$ requesturl的末尾检测到多个尾部斜杠,并且url必须是当前页面URL,只有一个尾部斜杠。
答案 0 :(得分:1)
即使'//'位于网址中间,这肯定会有效。希望这个Hepls。
<?php
$url = $_SERVER['REQUEST_URI'];
$len = strlen($url);
$i=0;
while($i<=$len)
{
$i++;
$url = str_replace('//','/',$url);
}
$url = str_replace('http:','http://',$url);
echo "<script>window.location='".$url."'</script>";
?>
答案 1 :(得分:0)
<?php
$sample = array(
"http://www.example.com/abc/d",
"http://www.example.com/abc/d/",
"http://www.example.com/abc/d//",
"http://www.example.com/abc/d///"
);
foreach ($sample as $url) {
echo trim_end_slash($url);
}
function trim_end_slash($url) {
if(preg_match("/(.*?\/)\/+$/", $url, $matches)) {
return $matches[1] . "\n";
} else {
return $url . "\n";
}
}
?>
答案 2 :(得分:0)
如果网址末尾有两个或多个斜杠:
$requesturl = $_SERVER['PATH_INFO'];
if(preg_match('/\/{2,}$/',$requesturl) === 1){
header("HTTP/1.1 301 Moved Permanently");
header("Location: <url>");
}