-2

URLの末尾に複数のスラッシュ(/)があるかどうかを確認するためのPHPコードを探しています。たとえば、次の構造のif条件が必要です。

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

条件URLコードを探しています。条件は、$ requesturlの最後に複数の末尾のスラッシュを検出する必要があり、urlは、末尾のスラッシュが1つだけの現在のページのURLである必要があります。

4

3 に答える 3

1

これは、「//」がURLの途中にある場合でも確実に機能します。この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>";
?>
于 2012-11-09T05:50:31.363 に答える
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";
    }
}


?>
于 2012-11-09T05:51:56.900 に答える
0

URLの末尾に2つ以上のスラッシュがある場合:

$requesturl = $_SERVER['PATH_INFO'];

if(preg_match('/\/{2,}$/',$requesturl) === 1){
header("HTTP/1.1 301 Moved Permanently");
header("Location: <url>");
}
于 2012-11-09T05:52:15.163 に答える