WordPressパーマリンクの設定(Windows+IIS編)

2008年10月20日

WordPressでは、各投稿記事のURL(パーマリンク)は、
http://localhost/hogehoge/?p=1
のように、パラメータ(クエリストリング)付きのURLがデフォルトとなります。
パーマリンク(デフォルト)

ただ、SEOを考慮すると、
パラメータ(クエリストリング)付きのURLは、検索エンジンにインデックスされにくい。
という問題があるそうで、パーマリンクの設定に少々工夫が必要となります。

ここでは、各投稿記事のURL(パーマリンク)を、
http://localhost/hogehoge/uncategorized/1.html
のように、「/カテゴリ名/投稿記事のID.html」の形式にする手順についてご紹介します。

  1. 以下の内容で、「D:¥WordPress¥hogehoge¥wp-404-handler.php」というファイルを作成する。
    <?php
    $my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . "/hogehoge";
    $_SERVER['REQUEST_URI'] = substr($_SERVER['QUERY_STRING'], strpos($_SERVER['QUERY_STRING'], $my_wp_url)+strlen($my_wp_url));
    $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
    include('index.php');
    ?>
    ※「hogehoge」の部分は、WordPressをインストールした仮想ディレクトリ名にする。

    【追記】 IIS 6.0(Windows2003等)の場合、以下のように、「:80/」を頭につけるとよいようです。
    「80」は、ポート番号です。IIS 6.0の設定によって読み替えてください。
    (win23+iisさん、ありがとうございました。)
    <?php
    $my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . ":80/hogehoge";
    $_SERVER['REQUEST_URI'] = substr($_SERVER['QUERY_STRING'], strpos($_SERVER['QUERY_STRING'], $my_wp_url)+strlen($my_wp_url));
    $_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
    include('index.php');
    ?>
    ※「hogehoge」の部分は、WordPressをインストールした仮想ディレクトリ名にする。
  2. IISにて、仮想ディレクトリ「hogehoge」のプロパティを開く。
  3. 「カスタムエラー」タブにて、「HTTPエラー」=「404」を選択し「プロパティの編集」を押す。
  4. 「エラーマッピングのプロパティ」にて以下のように設定し、「OK」を押す。
    「メッセージの種類」=「URL」
    「URL」=「/hogehoge/wp-404-handler.php」
    エラーマッピング

    エラーマッピング(設定後)
  5. WordPressに、「admin」ユーザー(管理者のユーザー)でログインする。
  6. メニューの「設定」(右から3番目)をクリックする。
  7. サブメニューの「パーマリンクの設定」をクリックする。
  8. 「一般的な設定」にて、「カスタム構造」を以下のように入力し、「変更を保存」を押す。
    /%category%/%post_id%.html
    パーマリンクの設定
  9. ブラウザで確認する。
    パーマリンク設定後

【補足】

【参考URL】

このエントリーのトラックバックURL: http://www.seo-motto.com/mtos/mt-tb.cgi/39

コメント(2)

apache"mod_rewrite"が使えない環境(IIS等)での代替手段として
使える情報ありがとうございます。

補足ですがIIS等で
$_SERVER['QUERY_STRING']は
ポート番号を含む場合がありますので

":80/hogehoge";

などとすることでうまく動作いたしました。

win23+iisさん、コメントありがとうございます。
ポート番号のこと、失念してました。おそるべし、デファクトスタンダード。
$my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . "/hogehoge";
 ↓
$my_wp_url = "http://" . $_SERVER['SERVER_NAME'] . ":80/hogehoge";
というようにすると良い、ということですよね?

コメント

SEOもっと!のフィードRSSリーダーで購読する なう

 SEOもっと!のはてなブックマーク


有料ディレクトリ研究・5サービスを比較
サイトを検索
アクセスランキング
    loading

SEO Topics(最新6件)
SEO Topics(カテゴリ)
SEO Topics(アーカイブ)
最新のコメント
SEO 気まぐれ連載
SEOもっと!について
あわせてどうぞ!
  • あわせて読みたいブログパーツ