最近お願いされた件で、いままでやったことがないパターンだったので、また使う時のためにメモ。
すでにウェブサイトを公開しているけど、新着情報の更新はHTMLを書き換えして運営していたようです。合わせて更新担当者がやめてしまったりして、うまく運営ができないとのことだったので、既存の部分は残しつつ、以下の様なご依頼を受けました。
このページの概要
既存サイトをそのままにして、自分で更新できるようにしたい
- すでに公開している静的なページはURLも含めてそのまま利用
- 更新する内容は基本的にテキストのみ
- 新着情報の個別記事を更新したら、自動的にトップページと一覧ページに表示
本来であれば、既存ページも含めてWordPressに入れてしまってもいいのですが、今回は部分的に導入しました。
すでに設定されている「トップページ」へのリンクを301リダイレクトで。
既存サイトでは、それぞれのページからトップページ「ドメイン/index.html」にリンクがあります。今回は、従来のトップページをWordPressのトップページに差替え「ドメイン/index.php」をしましたので、301リダイレクトを使います。
WordPressではパーマリンクを設定&ディレクトリ以外で公開する
WordPressは、専用ディレクトリにインストールして、ドメイン名で公開するように設定します。投稿のパーマリンクを変更します。今回は「/%category%/%post_id%.html」で設定しました。
この辺りは、いつものWordPressの設定なので、分からないときはグーグル先生に聞いてください。
WordPressが生成した「.htaccess」を書き換えるときの注意
パーマリンクの設定を行うと、基本的には自動的に「.htaccess」が作られます。その後、301リダイレクトの設定を追記するのですが、今回の環境では、WordPressが時々この「.htaccess」を書き換えることがありましたので、設定したはずなのに、いつの間にか元に戻っている。という現象が起こりました。
WordPressが生成する「.htaccess」の中身
# BEGIN WordPressRewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
書き換わるのは、上記の「# BEGIN WordPress 〜 # END WordPress」の間のみでしたので、これよりも上に、301リダイレクトの設定を書きます。
RewriteRule ^index\.html?$ / [R=301,L]
今回のケースでは、各既存ページにある「index.html」へのリンクを「ドメイン」にリダイレクトさせればよかったので、上の1行を追加するのみで、必要な挙動になりました。
※合わせて既存の「index.html」は削除しています。