幾千個網址,我將網站遷移,這將需要約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