如果 URI 中有多个斜杠,如何重定向到新的 url?

How to redirect to new url if multiple slashes in URI?

我正在使用 str_replace() 从 URL 中删除多余的斜杠并创建新的 url 但我不知道如何将其重定向到新的 URL 如果在 URL?

中发现多斜杠
$url = 'http://www.example.com///about///';
$new_url = str_replace(':/','://', trim(preg_replace('/\/+/', '/', $url), '/'));
if($new_url)
{
  echo 'Yes found multi slashes redirect it to new URL;
}
else
{
  echo 'Not found multi slashes';
}

这可能是程序员的狭隘视野,可能有更好的方法来做到这一点,但如果您希望根据 URL 不同的情况进行重定向:

$url = 'http://www.example.com///about///';
$new_url = str_replace(':/','://', trim(preg_replace('/\/+/', '/', $url), '/'));
if ($url !== $new_url) {
    header(sprintf('Location: %s', $new_url));
}

header无法重新发送,所以如果在此之前有其他打印,会报错。 我会删除 $_SERVER 或包含 base_url 的 CONST。关于您对代码的意图有很多问题,因为根据您要执行的操作,它更容易实现。