アオジ(戸隠神告げ温泉)


Date/Time: 2014:06:15 15:18:00
Camera: PENTAX
Model: PENTAX K-5 II s
Exporsure Time: 1/100
FNumber: 0.0
Aperture Value:
Focal Length: 500.0

Close

y2blog » .htaccess ファイルによるURLのリダイレクト

4

28

2008

.htaccess ファイルによるURLのリダイレクト

.htaccess ファイルによるURLのリダイレクト


WordPress を利用していて、誤って以前に書いた記事を削除してしまった経験の有る方も多いのではないでしょうか.誤って記事を消さなくても、内容を全面的に書き換えて新たな記事として投稿したい場合もありますね.そのような場合、Google などの検索サイトやソーシャルブックマークサービスなどにその記事のURLが載ってしまっていると、そのURLを辿ってアクセスしてきた人に 404 エラーを返してしまうことになり、その記事を追いかけるのを諦められてしまう可能性が高くなってしまいます.
( WordPressの投稿エディタの “Save” ボタンの直ぐ隣に “Delete” リンクが貼られているのも困りものですが)
Wordpress の場合は元の記事の内容を再度ポストし直したとしても、通常再度ポストされた記事のパーマリンクは前の記事のそれとは別なものになってしまいますので、何らかの形で古い記事のURLにアクセスしてきた人に対して新しい記事のURLを知らせる必要があります.


最近の Google の検索ロボット(クローラ)は、記事をポストしてから1時間もしないうちにやってくることが多いので、記事の書き直しのため一旦削除して投稿し直しても Google にしっかりと古い記事を登録されてしまう事が多々あります.


このような場合に便利なのが WEBサーバの URLのリダイレクト機能です.世の中の大部分のWEBサーバは Apache だと思いますので、Apache の場合を例に簡単に説明します.


自分でサーバを立てて運用している場合は、直接サーバの Apache の設定を変更できるので自由にWEBサーバの設定を変更できるのですが、大部分の方は何らかのレンタルサーバのユーザスペースを間借りしてブログを運用しているのではないでしょうか.


このような場合、一般ユーザ権限でしかサーバにアクセスできないので、ユーザがApache の設定を自由に変更するわけにはいきません.このような場合でもユーザ側で WEBサーバの設定を個別に変更できる機能が、.htaccess ファイルによる個別設定機能です.


この機能を使うと古いURLにアクセスしてきた人の手を一切煩わせることなく、透過的に新しい記事のURLに振り向ける(リダイレクト)ことができます.
Apacheの設定に詳しくない方のために、簡単にこの .htaccess ファイルの役割を説明しておきます.

.htaccess ファイルの役割


WordPress ではユーザがパーマリンクの設定を標準以外の設定に変更すると、自動的にパーマリンクをWordpress の標準的な URL 形式に変換する書き換えを行っています.


例えば、Wordpress の標準的な URL 形式では、投稿された記事のパーマリンク(URL)は全て

https://y2tech.net/blog/?p=713 


(この記事の パーマリンクです.外面は https://y2tech.net/blog/inet/wp/url-redirect-713/ )
のような形で処理されています.このURLはユーザがパーマリンクの設定を標準以外に設定していても、常に有効になっています.つまりWordpress は記事のポストID (この場合は 713) をパラメータとして受け取って、その記事の内容をWEBサーバを通じてクライアントのWEBブラウザに送り返している事になります.


ただし、この標準のパーマリンク形式では URLが単純なのですが人間がアクセスするには何の記事か分からず今イチですよね.しかも SEO 的に見ても決して好ましくはありません.そこで大部分の人は WordPress のパーマリンクの形式を、
https://y2tech.net/blog/2008/04/27/xxxx/
などのように分かり易いパーマリンク(URL) になるように変更していることと思います.


このようにパーマリンクを変更することで、人間にも検索ロボットエンジン(クローラ)にも優しい(? )URL で該当記事にアクセスできるようになります.


WordPressではこの機能を実現するために、WEBサーバに対して、https://y2tech.net/blog/2008/04/27/xxxx/ というURLでアクセスしてきたHTTPのリクエストを、Wordpressの本来の エントリーURLである https://y2tech.net/blog/index.php に振り向けて(書き換えて)います.


このWEBサーバに対する書き換え処理のルールは、ユーザのWordpressのルートディレクトリ( このブログの場合は /blog/ というディレクトリ )に置かれている “.htaccess” というテキストファイルに設定されます.Wordpress ではこの書き換えルールはパーマリンクの設定を変更すると自動的に作成されますので、ユーザが自分で設定する必要はありません.
.htaccess ファイルに書かれているパーマリンクの書き換えルールの設定は次のようになっています.( /blog/ という部分は WordPress が置かれているディレクトリ名です)


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

リダイレクト処理を .htaccess ファイルに設定する


ずいぶん前置きが長くなってしまいましたが、本題である古いURLにアクセスしてきたリクエストを、自動的に新しいURLに振り向けるリダイレクト処理について簡単に紹介します.


リダイレクト処理も パーマリンクの書き換え処理と同様に、 .htaccess ファイルを利用して設定します.先程の .htaccess ファイルに、次の設定を書き加えます.
【 .htaccessの記述例 】


<IfModule mod_alias.c>
  Redirect permanent /blog/inet/web/ie-with-utf8-707/ http://https://y2tech.net/blog/inet/web/wp-ie-utf8-712/
</IfModule>
この記述を .htaccess ファイルに追加することで、旧URL “https://y2tech.net/blog/inet/web/ie-with-utf8-707/” にアクセスしてきたリクエストを、強制的に新URL “https://y2tech.net/blog/inet/web/wp-ie-utf8-712/” にリダイレクトします.


Apache のリダイレクトの設定についての詳細は、Apache モジュール mod_aliasを参照下さい.


最終的な .htaccess の内容は


# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# END WordPress

<IfModule mod_alias.c>
  Redirect permanent /blog/inet/web/ie-with-utf8-707/ https://y2tech.net/blog/inet/web/wp-ie-utf8-712/
</IfModule>

のようになります.