Edited at

パーマリンクの設定 / 404エラー対応メモ

More than 3 years have passed since last update.

サーバーをあまりいじったことがないので、

勉強がてらwordpressでブログを作成しました。

パーマリンクの設定後、

記事のページに飛ぶと404になってしまい、

少しハマったのでメモがてら設定した内容をまとめます。


まとめ


  • mod_rewriteモジュールを有効にする必要がある

パーマネントリンクで設定したurlからwordpressが記事を在りかを探すため。



  • .htaccessを編集(なければ作成)する

wordpressが記事の在りかを探すための具体的な内容を記述するため。


動作要件

http://wpdocs.osdn.jp/%E3%83%91%E3%83%BC%E3%83%9E%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9#mod_rewrite:_.22Pretty_.E3.83.91.E3.83.BC.E3.83.9E.E3.83.AA.E3.83.B3.E3.82.AF.22



環境


  • さくらVPS

  • CentOS

cat /etc/redhat-release

CentOS release 6.7 (Final)


  • apatch

httpd -v

Server version: Apache/2.2.15 (Unix)

Server built: Mar 22 2016 19:03:53


  • url

http://blog.example.com/


手順


パーマリンクの設定@wordpress

割愛


mod_rewriteを有効にする

/etc/httpd/conf/


httpd.conf

LoadModule rewrite_module modules/mod_rewrite.so


上記を追加もしくはコメントアウトを外す。


.htaccessを読み込めるようにする

/etc/httpd/conf/


httpd.conf

<Directory "/var/www/html/blog/wordpress">

AllowOverride All
</Directory>


httpd.conf```が全体の設定、

```.htaccess```が個別ディレクトリの設定を制御しており、

```AllowOverride All```を記載しないと、
```httpd.conf```の設定が優先されてしまい、
```.htaccess```がそもそも読み込まれない。

ちなみに```AllowOverride All```になっていなかったので、
ぼくはハマりました。

#### ```.htaccess```を編集



BEGIN WordPress



RewriteEngine On

RewriteBase /wordpress/

RewriteRule ^index.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]


END WordPress


* RewriteBase の初期値は / になっています

#### 設定を反映

```service httpd restart```

これでパーマリンクが反映された個別記事もきちんと表示されるはず。