mod_rewriteの設定(パーマリンク形式を変更した場合にエラー表示された場合)

広告

「mod_rewrite」とはURLの書き換えなどを行うモジュールです。Webサーバに対して静的なURLでアクセスがあった場合に本来の動的URLへ書き換えを行う場合に使います。「mod_rewrite」を有効にするにはWordPressを動かしているWebサーバのApacheに対して設定を行う必要があります。

WordPressでパーマリンクの形式を変更した場合、設定したパーマリンクの形式でアクセスを行なうと、内部的に本来の形式であるデフォルトのフォーマットのパーマリンクへ書き換えが行なわれます。

http://www.example.com/2016/01/hogehoge/ ---> http://www.example.com/?p=12

デフォルトのフォーマットのパーマリンクであれば表示されていた記事も、パーマリンク形式を例えば「日付と投稿名」のフォーマットに変更するとエラーが表示されます

p2-1

p2-2

パーマリンクの形式を変更したらエラーが表示される場合は、このページ記載したmod_rewriteの設定を行ってみて下さい。

mod_rewriteを有効にするための設定は2つあり、Apacheの設定ファイルである「httpd.conf」ファイルの設定と、WordPressをインストールしたディレクトリに作成されている「.htaccess」ファイルへ設定を行います。ただし「.htaccess」ファイルはパーマリンクの設定を行うと自動的に変更してくれます。

httpd.confファイルの設定

「httpd.conf」ファイルの設定を行います。Apache(今回は2.4系です)をWebサーバとして使用している前提となっています。「httpd.conf」ファイルをテキストエディタで開き、「LoadModule rewrite_module modules/mod_rewrite.so」を検索して下さい。

#LoadModule rewrite_module modules/mod_rewrite.so

先頭に「#」が付いている場合はコメントとなっています。先頭の「#」を削除して下さい。

LoadModule rewrite_module modules/mod_rewrite.so

次に「.htaccess」ファイルが使用できるように設定します。WordPressをインストールしたディレクトリに対して「AllowOverride」を「All」又は「FileInfo」に設定します。今回は下記のような設定を「httpd.conf」ファイルの最後に追加しました。

<Directory "C:/pg/Apache/Apache24/htdocs/wordpress">
    AllowOverride All
</Directory>

※ ご自身の環境に合わせて変更して下さい。

設定は以上で終了です。設定が終わりましたらApacheを再起動すると設定が有効となります。

.htaccessファイルの設定

WordPressをインストールしたディレクトリに「.htaccess」ファイルが作成されています。

p2-3

インストール直後に「.htaccess」ファイルをテキストエディタで開いてみると次のような表示がされています。

# BEGIN WordPress

# END WordPress

WordPressの管理画面でパーマリンクの形式を変更すると、次のような記述が「.htaccess」ファイルに自動で書き込まれます。

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

# END WordPress

「.htaccess」ファイルに書き込みができるようになっている場合、パーマリンク形式の変更に伴って自動的に記述が追加されたり削除されたりするので特に気にされる必要はありません。

設定変更の確認

それではパーマリンクをデフォルトのフォーマット以外に変更した後で、記事を表示してみます。

p2-4

今度はエラーとならず記事が表示されました。

WordPressの使い方の他の記事を見てみる

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)