几千个网址,我将网站迁移,这将需要约5000重定向,在格式如重定向使用PHP
http://www.acme.org/content/item.aspx?id=123
重定向到 http://www.acme.org/resources/articles/why-acme-is-great
通常我会通过的.htaccess或实现这一点nginx模块。然而,我在一个WordPress的特定主机,万神殿,它不允许访问。
因此,我能想到的唯一解决方案就是使用PHP。以下工作。有一些WordPress的具体代码在那里,以防止WordPress只是扔404。
add_filter('template_redirect', 'my_404_override');
function my_404_override()
{
global $wp_query;
if (strpos($_SERVER['REQUEST_URI'], 'issues') !== false) {
$redirectURL = "/resources";
if (strpos($_SERVER['REQUEST_URI'], '123') !== false) {
$redirectURL .= "/articles/why-acme-is-great/";
}
}
if (!empty($redirectURL)) {
status_header(200);
$wp_query->is_404 = false;
header('HTTP/1.0 301 Moved Permanently');
header('Location: http://www.acme.org' . $redirectURL);
}
}
这工作正常。然而,我有两个问题:
- 对于5000的列表,这对性能有什么影响?我打算使用一些更大的条件,然后缩小范围(在上面的例子中,我首先检查
/resources
,然后再查看特定的ID - 虽然这个列表理论上永远不需要修改,但它感觉像一个丑陋的解决方案在语法和逻辑方面有没有更好的方法我没有想到
不太清楚,如果我理解你正在尝试做的,但你可以使用'get_permalink($ ID)'和通过每'ID'。例如'get_permalink(123)'='mysite.com/articles/why-acme-is-great /'。另外 - 如果是这样的话 - 它将用于多语言网站。 –
我看到一些插件(安装数量少,过时),声称允许在您无法直接访问的网站上管理.htaccess。值得一看,例如:https://wordpress.org/plugins/wp-htaccess-control/ – markdwhite