WordPressのパーマリンク設定を変更しようとしたところ,「.htaccessを更新する必要があります」と表示されてしまいました.さらに,投稿した記事を読もうとすると404エラーでファイルが見つからないと言われてしまいます.

とりあえず,以下の方法により404エラーは出なくなりました.

環境

  • CentOS 7.2 (VPS)
  • Apache 2.4.6
  • WordPress 4.9.2

手順

1. .htaccessの作製

WordPressをインストールしたディレクトリに.htaccessを作製します.ついでに所有者とパーミッションを変更します.{workgroup}は適宜書き換えてください.

# touch .htaccess
# chown apache:{workgroup} .htaccess
# chmod 604 .htaccess 

2. .htaccessの内容を編集

vi等のエディタを用いて,以下の通り書き込みます.

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

3. Apacheの設定を変更

Apacheの設定を変更して.htaccessの動作を許可してもらいます.

/etc/httpd/conf/httpd.confのうち以下の部分を修正します.(ここでは,AllowOverride Allとしてますが,AllowOverride FileInfoでも行けるような気がします.むしろセキュリティ的にはこちらの方がいい?)

...
# Further relax access to the default document root:
<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # 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 # ここをNoneからAllに書き換える

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
...

書き換えたら,httpdサービスを再起動します.

# systemctl restart httpd

おわりに

以上で,パーマリンク設定を変更できるようになり,404等のエラーも出なくなるはずです.

しかし,相変わらずWordPressの設定画面には,「.htaccessを更新する必要があります」とエラー表示されていますが,パーミッション設定が悪いのか?

参考

以下のサイトを参考にしました.ありがとうございます.

VPSなどで、WordPressのパーマリンクの設定がうまくいかない時

Apache HTTP サーバ バージョン 2.4 コア機能