WordPress的PHP重定向用正则表达式通配符

问题描述 投票:0回答:1

这是一个项目。我需要重定向某些传入的URL请求发送到托管在同一Web服务器的文件。我不能使用的.htaccess,我不能靠任何插件。

我设法用一个插件来做到这一点,但我有一个困难时期,以写我自己的插件,它做什么,我需要做的硬编码提取必要的代码。

  • WordPress的多站点
  • 所有软件最新
  • “重定向” WordPress插件(成功)
  • 编写自定义WP函数来做到这一点(半成功)

我找到了万神殿文档中的一些代码:

$blog_id = get_current_blog_id();

// You can easily put a list of many 301 url redirects in this format
// Trailing slashes matters here so /old-url1 is different from /old-url1/
$redirect_targets = array(
  '/test/test.xml' => '/files/' . $blog_id . '/test.xml',
  '/regex/wildcard.xml(.*)' => '/files/' . $blog_id . '/regex.xml',     
);

if ( (isset($redirect_targets[ $_SERVER['REQUEST_URI'] ] ) ) && (php_sapi_name() != "cli") ) {
  echo 'https://'. $_SERVER['HTTP_HOST'] . $redirect_targets[ $_SERVER['REQUEST_URI'] ];
  header('HTTP/1.0 301 Moved Permanently');
  header('Location: https://'. $_SERVER['HTTP_HOST'] . $redirect_targets[ $_SERVER['REQUEST_URI'] ]);

  if (extension_loaded('newrelic')) {
    newrelic_name_transaction("redirect");
  } 
  exit();
}

qazxsw成功POI

重定向到

/files/5/text.XML


然而,一些传入的请求包含查询字符串,例如

https://example.com/test/test.xml


显然,从重定向

https://example.com/regex/wildcard.xml?somequerystring

/files/5/热个性.XML

工作正常。


但是,只要有涉及到查询字符串,重定向不起作用。考虑到我需要用PHP来做到这一点,我怎么能实现一个通配符无论从/正则表达式重定向/ *或/regex/wildcard.xml*到/files/5/regex.xml?

任何帮助将不胜感激。

谢谢,丹尼尔

regex wordpress redirect url-redirection http-status-code-301
1个回答
1
投票

如果您希望保留您的代码逻辑,只是使代码的工作,那就试试这个:

https://example.com/regex/wildcard.xml

只要你想,你可以修改重定向规则。它可以作为一个正常的正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.