无法使用 PHP 正确重定向

Cannot redirect correctly with PHP

我想重定向网站中的博客。

例如这个URLhttps://example.com/blog/june-2021/name-of-blog-post should redirect to https://example2.com/blog/june-2021/name-of-blog-post

有数百篇博客文章,所以我无法使用数组将它们一一重定向。

我正在使用 Pantheon 作为主机。我将脚本添加到 settings.php.

目前从 example.com 到 example2.com 的所有内容都无法正常工作。

这是我的脚本:

$url = $_SERVER['REQUEST_URI'];

$uri_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri_segments = explode('/', $uri_path);
$blog = $uri_segments[0];
$post_date = $uri_segments[1];
$post_name = $uri_segments[2];

if ((stripos($url, "/blog/") === 0) && (php_sapi_name() != "cli")) {
  header('HTTP/1.0 301 Moved Permanently'); header("Location: https://example2.com".$blog.$post_date.$post_name);
  if (extension_loaded('newrelic')) {
    newrelic_name_transaction("redirect");
  }
exit(); }

提前致谢!

您可以通过检查是否在 $_SERVER['REQUEST_URI'] 中的任何地方找到 !== false 来检查 /blog/:

if ((stripos($url, "/blog/") !== false) && (php_sapi_name() != "cli")) {

或者查看是否在$_SERVER['REQUEST_URI']的第0个位置找到:

if ((stripos($url, "/blog/") === 0) && (php_sapi_name() != "cli")) {

备注:

  1. stripos 只需要三个参数,你只需要前两个。
  2. Location header 应该由一个 单一绝对 URI 组成,就像 https://example2.com/blog/june-2021/name-of-blog-post,所以你可以看看另一个 $_SERVER 变量构造一个。