检查URL末尾的斜杠数

时间:2012-11-09 05:31:09

标签: php url

我正在寻找PHP代码来查找URL末尾是否有多个斜杠(/)。例如,我想要一个具有以下结构的if条件:

$requesturl = $_SERVER['PATH_INFO']
if ( <condition> ) {
header("HTTP/1.1 301 Moved Permanently");
header("Location: <url>");
}

我正在寻找条件 url 代码。条件需要在$ requesturl的末尾检测到多个尾部斜杠,并且url必须是当前页面URL,只有一个尾部斜杠。

3 个答案:

答案 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>");
}