問題描述
我需要將整個 WordPress 網站重定向到一個 WordPress 頁面。一種維護模式,但重定向必須轉到已釋出的 WordPress 頁面。不幸的是,我需要顯示的維護頁面必須使用其他 WordPress 外掛。
我不知道有任何維護模式外掛可以讓你這樣做。最多可以讓您編寫自定義 HTML /CSS 程式碼。
我在想一個.htaccess mod_rewrite 規則。但是,我對 mod_rewrite 非常弱。
首先,我是 disabled canonical redirects 。
然後,我試圖使用:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]
但是,這些規則會生成重定向迴圈。當然,page_id=813
是我的維護頁面的 ID 。
有人知道維護模式外掛,哪個重定向到已釋出的頁面?
或者,有人可以幫助我修復 mod_rewrite 規則嗎?如果我們可以將/wp-admin
離開重定向規則,額外的歡呼聲。
最佳解決方案
你根本不需要.htaccess 來完成。一個.htaccess 的修復將會膨脹和超載。
相反,我們可以掛接到僅在 front-end(而不是 wp-admin) 中觸發的 template_redirect
過濾器。然後,我們使用 is_page()
功能來檢查我們正在檢視的 ID 為 813 的頁面。如果沒有,請使用 wp_redirect()
功能重定向到該頁面。
add_action( 'template_redirect', 'wpse_76802_maintance_mode' );
function wpse_76802_maintance_mode() {
if ( ! is_page( 813 ) ) {
wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
exit;
}
}
這將非常適用於維護模式,因為重定向是使用 302 ‘temporary’ HTTP 頭,讓機器人和搜尋引擎知道您的網站將很快上線。但是,如果您永久移動網站,則可能需要使用 301 ‘permanent’ HTTP 標頭進行重定向。您可以透過向 wp_redirect
函式新增第二個引數來執行此操作。例:
add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' );
function wpse_76802_goodbye_redirect() {
if ( ! is_page( 813 ) ) {
wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ), 301 ) );
exit;
}
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。