権限がないのでWordPress側でリダイレクト設定したお話
複数サーバを持っていて一つ閉鎖することになった場合の対応について。
サーバをすぐには削除せず、閉鎖のお知らせをしながら別サイトへリダイレクトさせる事例です。
しかもTOPページにお知らせのPDFを表示して数秒後にリダイレクトしたいというわがままっぷり。
root権限を持っていないためWordPressのfunctions.phpでやるしかない状況なのです。
時間かかりましたがなんとか実装できました。
wp_safe_redirectとheader
まずはtest_site1.hogeのどこにアクセスしてもTOPにリダイレクトさせるようにします。
NGINXだと楽にできるのですが今回はWordPressを制御します。
functions.phpに下記を記述します。
add_action( 'template_redirect', 'home_redirect' ); function home_redirect() { if( !is_front_page() && !is_home() && !is_admin() ) { wp_safe_redirect( home_url() ); exit; } }
これでTOPや管理画面以外へのアクセスはhome_urlにリダイレクトさせます。
次にhome_urlに該当するPHPファイルを修正します。
index.phpやhome.phpやfront-page.php等々。
表示させたいPDFをDocumentRoot配下に設置しておきます。
下記のように記述。
$filename = 'oshirase.pdf'; header('Refresh: 5; URL=https://test_site2.hoge'); header('Content-Type: application/pdf'); readfile($filename);
これでtest_site1.hogeへアクセスするとPDFが表示されて5秒後にtest_site2.hogeへリダイレクトされます。
切り戻しがないことを祈りつつ完了となります。
コメント