wordpressの特定ページで404エラーを返す方法
wordpressのテーマにはデフォルトで404.phpというテンプレートが用意されています。このテンプレートがあれば、存在しないURLに対して自動的に404ステータスコードを返すようになっています。しかし、wordpressを運用していると時として、200以外のステータスコードを返したい場合があったりします。
ステータスコードとは
ステータスコードはサーバの応答のことです。三桁の数字から構成されており、100番から500番台の間で割り当てられています。このうち404番は、ページが存在しない場合に出力されます。リソースが見つからない、或いは未検出とも表現されます。ちなみに200番はリクエストに成功した時に返されるステータスコードです。
wordpressは、テーマやプラグイン、本体の更新中にメンテナンスモードになります。このメンテナンスモードですが、通常...
wordpressで404エラーを返す方法
wordpressで404を返すには、以下のようなコードをheader.phpの一番上に記述します。この例ではwordpressのスラッグを取得して404を返すべきページを判定していますが、URLの構成がIDを利用したものであれば、IDで判定したほうが視認性に優れます。IDのURLはスラッグの保存にタイトルを使っており、その中に日本語があればURLエンコードによって長くなるためです。
wordpress上で404を確認するには?
以下のようなコードをwordpressのテンプレート上のどこかに貼り付けます。is_user_logged_inで条件分岐していますので、wordpressでログインしているユーザにしか表示されないようになっています。ただ、テンプレートを直接触りますので、バックアップをとっておくと良いでしょう。また、ワードプレスの仕様変更によって動作しない関数が存在するときちんと表示されないこともあるため、その時はいつでもバックアップしたテンプレートをアップロードできるようにしておく方が無難です。
他にブラウザのデベロッパーツールやWindows上で動作するCURLアプリケーションをインストールするといった確認方法もあります。
.htaccessで404エラーを出力
ドメイン直下の「.htaccess」ファイルへ以下のように記述します。ドメイン直下とは、example.com/.htaccessという形になります。下の例だと、example.com/404.htmlがパスとなります。この方法はワードプレスに限らず、一般のウェブサイト全般に有効です。
ページが存在しない場合、全て404.htmlを表示。
特定の記事のみ
カテゴリー以下の記事すべて。
カテゴリーのみ404でカテゴリー以下の記事は表示する。
永久に消滅したことを意味する410エラーを返したい場合。
ワードプレスというディレクトリ内ファイルを永久に全て削除したい場合。
ワードプレスのエラーと一言でいってもその種類は多岐にわたります。例えばhttpやデータベース接続確立エラー、そして...
ワープレを運用しているかたで時々403Forbiddenが出力されてしまうという話を聞きます。この403For...
まとめ
ワープレに限ったことではありませんが、ステータスコードを変えたいケースもあると思います。ワープレの場合、スラッグやIDなど、記事固有の情報があるため、それを用いて条件分岐することが可能です。該当記事のスラッグなどを配列化させると複数ページにも対応できますので、ワープレ上で記事を残したい場合は、重宝するかも知れません。