WordPressのパーマリンク設定

WordPress のパーマリンクを

https://example.com/sample-post/

という形にしたときに上手くいかなかった原因を解消したので、そのメモです。

ちなみに上記のような形を “Pretty パーマリンク” と呼び、

https://example.com/?p=N のような形を “Ugly” と呼びます。

 

解消方法の答えは公式ドキュメントに記載されています

パーマリンクの使い方

FollowSymLinksとAllowOverrideを設定しなければいけない

  • Options FollowSymLinks

  • AllowOverride All

この 2 つが設定されていなければいけません。

apache の .conf ファイルか、Wordpress がインストールされているディレクトリの .htaccess 等に上記を記載しなければなりません。

.conf ファイルを編集する際は、80 番ポートや 443 番ポートを間違えないように。

また、.conf ファイルを編集したら、apache の restart か reload を忘れないように。

.htaccess を編集する際は、後述しますが WordPress が書き込みを行う範囲外に記載しなければいけません。

.htaccess ファイルが存在しなければならない

WordPress の管理画面で Pretty パーマリンクを選択して保存すると

WordPress は .htaccess に書き込みを行います。

そのため、.htaccess が存在していなければなりません。

存在しない場合は WordPress が作成を試みるようですが、うまく行かない場合は自分で作成しましょう。

.htaccess の書き込み権限を WordPress が持っていなければならない

.htaccess に WordPress が書き込みを行うので、権限を持たなければなりません。

WordPress が書き込みを正しく行えなかった場合には下記のような内容が表示がされます。

chown apache:apache .htaccess
chmod 644 .htaccess

としてあげれば良さそうです。

FollowSymLinksとAllowOverrideを.htaccessに記載する際は、上書きされない場所に記載する

上記で説明したように、Wordpress は .htaccess に書き込みを行います。

.htaccess に記載を行う場合は

# BEGIN WordPress
・・・
# END WordPress

の外側に記載しましょう。

内側に記載してしまうと、上書きされて記載した内容が消えてしまいます。

Laravel の apache 設定

チュートリアルを進めていて、/tasks の URL に遷移しても、

index.php ではなく、/public/tasks にアクセスしようとしてしまう場合。

 

公式ドキュメント

https://readouble.com/laravel/5.1/ja/installation.html

にも書いてあるが、.htaccess が動作していない可能性がある。

そのときには、apache の .conf ファイルに下記のように設定をする。

<VirtualHost *:80>
    DocumentRoot /path/to/public/
    ServerName foo.example.com
    <Directory /path/to/public>
        Options Indexes
        AllowOverride None
        Require all granted

        Options +FollowSymLinks
        RewriteEngine On

        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </Directory>
</VirtualHost>