wordpressのパーマリンク設定がデフォルト以外だと404になるの解決法

パーマリンクを設定したあとにエントリの詳細ページやカテゴリー一覧ページに行こうとすると、
WordPressが404エラーを返してくる。
パーマリンクを設定しただけであとは勝手にファイルやDBの移動をしてくれるのだろうと思っていましたが、
どうやらそう甘くはありません。

mod_rewriteの設定

これが今回はまった原因。 mod_rewriteとはURLの書き換えなどを行うモジュールです。 今回のようにWWWサーバに対して静的なURLでアクセスがあった場合に本来の動 的URLへ書き換えを行います。 mod_rewriteはApacheなどのWWWサーバの機能ですので、mod_rewriteを有効にするには Apacheに対して設定を行う必要があります。 mod_rewriteを利用するために必要な設定は2つあり、Apacheの「httpd.conf」の設定と「.htaccess」ファイルの設定です。 ただし「.htaccess」ファイルはパーマリンクの設定を行うと自動的に変更してくれます。 ubuntuの場合 httpdではない UbuntuでのApache設定ファイルはapache2.conf
  1. a2enmodコマンドを管理者権限で実行する
  2. (.htaccessを使うなら)設定ファイルの内容を変更する
まずは、a2enmodコマンドを早速実行してみます。mod_rewriteのプリフィックス「mod_」を除いたモジュール名が引数になるようですね。
;; 一般ユーザでやると怒られました
# sudo a2enmod rewrite
Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

このコマンドを実行すると、/etc/apache2/mods-enabled下にrewrite.loadというシンボリックリンクが作成されました。
で、このリンクの実体は../mods-available/rewrite.loadとなっていますので、実体の中を覗いてみました。

;; 発見!!
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

おすすめ

1件の返信

  1. 2011年4月1日

    […] ずっと初期設定の/?p=12とかのパーマリンクにしてました。 SEO的に.htmlの方がいいかと思い今回変更しました。 ところが記事が80以上あり、被リンクもあります。 これはもうリダイレクトするしかない! 下記でできます。 WP3.0で動作するリダイレクトプラグイン。 ●Permalink Redirect(2.0.4) http://coliss.com/articles/blog/wordpress/plugin/wordpress-plugin-permalink-edirect.html 日本語版もあるようです。ページ下部の日本語版をダウンロードして解凍してできたフォルダ丸ごとプラグインフォルダに入れる。 管理画面のプラグインで有効化すると設定に「Permalink Redirect」が追加されているので設定します。 テキストボックスが3つありますが一番下の「Old Permalink Structures」を使います。 ここに古いURIのパーマリンクを入力します。私の場合は「/?p=%post_id%」です。 その下に現在のパーマリンクが表示されるはずですが、私の場合表示されず、 とりあえず古いURLのパーマリンクだけ入力して「Update Options」を押して完了です。 試しに古いURIでアクセスしてみたら、バッチリリダイレクトされました。 ちなみにNOTFOUNDになる人はこちら→http://blog.hisashi.me/?p=370 […]

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください