这是一个项目。我需要重定向某些传入的URL请求发送到托管在同一Web服务器的文件。我不能使用的.htaccess,我不能靠任何插件。
我设法用一个插件来做到这一点,但我有一个困难时期,以写我自己的插件,它做什么,我需要做的硬编码提取必要的代码。
我找到了万神殿文档中的一些代码:
$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?
任何帮助将不胜感激。
谢谢,丹尼尔
如果您希望保留您的代码逻辑,只是使代码的工作,那就试试这个:
https://example.com/regex/wildcard.xml
只要你想,你可以修改重定向规则。它可以作为一个正常的正则表达式。