WordPressのパーマリンク設定で気をつけること

2013年5月21日

おはようございますサトです。
23時就寝5時起床というおじいちゃん生活によって、朝から頭がサクサクでございます。

WordPressのパーマリンク設定

先日のお問い合わせ。
「Osukiniサーバーはノンマネージドとなっておry」な回答では私が申し訳ないので、自分の勉強も兼ねて書いてみます。

htaccessを有効にするにはどうすればよいでしょうか?
httpd.confファイルを書き換えても反応はありません。
ワードプレスのパーマリンク設定で、必要としております。


パーマリンク設定って難しいですよね。私もこのブログを立ち上げるとき、設定に失敗してサイトが表示されなくなったりしました。
パーマリンクや.htaccessファイルの設定については過去にも少し触れていますが(下記リンク参照)、もう少し解りやすくなるようにまとめてみました。


httpd.confの設定

パーマリンクの設定のために、.htaccessが有効になっているか確認します。
root権限でhttpd.confファイルを開きましょう。
# vi /etc/httpd/conf/httpd.conf

AllowOverride

314行目あたりから下記のような記述があります。


-----一部省略-----

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride All

-----一部省略-----


「AllowOverride」が「None」になっている場合、「All」に修正します。
「All」以外にも「FileInfo」など、より細かく設定することでセキュリティを高めることもできるようなので、ご自身の環境に合わせて設定してみてください。
参考: core – Apache HTTP サーバ

mod_rewriteモジュール

mod_rewriteモジュールがオフになっていないか確認します。これがないとURLの書き換え=パーマリンクの設定ができません(超簡単に言った)。
httpd.confの187行目あたり。
LoadModule rewrite_module modules/mod_rewrite.so
もしこの記述がコメントアウトされているようだったら、行の頭の「#」を外します。

.htaccessの設定

WordPressをインストールしたときに、WP関連ファイルと同じ場所に.htaccessファイルが自動で生成されたと思います。
WPインストール直後の.htaccessファイルの中身は
# BEGIN WordPress

# END WordPress
こんな感じで、特に何も書かれていません。
管理画面からパーマリンクの設定をすると、自動で下記のように書き込みが追加されるはずです。
# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]


# END WordPress

パーミッションの確認

.htaccessファイルの中身が更新されない、あるいはそもそもファイルが存在しないという場合。
WordPressにファイルを生成したり書き込みしたりする権限がないのかもしれません。
ディレクトリ/ファイルの所有者や所有グループによってパーミッションの設定は変わると思いますが、apacheに書き込み権限を与えてあげてください。

自分でファイルを作成する

.htaccessファイルが存在しなかったら、同じ内容のファイルを自分で作ってアップロードしても構いません。
この時もパーミッションには注意です。アップロードしたのが自分でも、その後WordPress側で書き込み更新ができなければ意味ないので。
(所有者が自分の場合、グループかその他ユーザーにも書き込み権限を与えないと、apacheが書き込みできない)
また、URLにも注意しましょう。
RewriteBase /
RewriteRule . /index.php [L]
WordPressをインストールした場所がルートのサブフォルダである場合は、上記のURLが変わります。
例えばこのブログ(saases.jp/blog/)の場合は
RewriteBase /blog/
RewriteRule . /blog/index.php [L]
となります。今一度ご確認を“φ(・ω・。*)

ファイルは存在するはずなのにFTPソフトで表示されない

パーマリンクは問題なく動いてる。でもFTPソフトで確認すると.htaccessファイルが存在しない…?
それはFTPソフトで「隠しファイルを表示しない」設定になっているからです。
解除の方法はソフトによっていろいろだと思いますが、Transmitの場合(Transmitはデフォルト非表示になっていました)。

表示メニューから「不可視項目を表示」にチェック。

自分で思いついたのはこのくらい。
それでも直らなかったって方、是非教えてください。


——————–

全然関係ない話なのですが、面白かったので思わずキャプチャ。

日本ラッドの「ソーシャルメディア公式アカウント一覧」ページに載ってました。
何についてのブログか書いてないから、なんか「知識0なぺーぺーの徒然日記」みたい( ゚д゚)ァラヤダ

…俺ぁチュートリアルブログと呼ばれるようにもっと頑張るよ。