概要
- WordPressをテスト環境から本番環境に引っ越したら、なぜかパーマリンクに
index.php
が入ってしまうようになってしまった。ということで、その原因と解決手順を残します。
Wordpress環境
- サーバー(AWS EC2インスタンス)
- OS:Ubuntu 18.04.3 LTS
- Web Server:Apache/2.4.29
- Wordpressバージョン:6.1.1
- PHPバージョン:7.4.33
解決手順
- WordPressの管理画面にログインし、「設定」→「パーマリンク設定」を選択します。パーマリンクの形式で
index.php
が入ってしまっていると思うので、任意のものを指定します。 - これで自動的に更新されますが、反映されていない場合は、
.htaccess
ファイルを手動で更新する必要があります。自分の場合は更新されなかったです。 - まずは以下のディレクトリ(sampleのところは各自置き換えてください)に移動します。
$ cd /var/www/html/wpsample_homepage
- ルートディレクトリ直下にある
.htaccess
に、警告で表示されている以下を先頭に追加します。
.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
- これにより、
index.php
がパーマリンクに含まれなくなります。
なぜパーマリンクにindex.php
が含まれてしまうようになったのか?
- ちなみに、どうして
index.php
がパーマリンクに含まれてしまうのか調べたところ、.htaccess
ファイルが存在しない場合や書き込み権限がない場合に発生することがあるようです。パーマリンクの設定は、URLリダイレクトやURL書き換えのルールを記述する.htaccess
と関係があるからですね。書き込み権限がなかったかもなので、その場合は、以下のコマンドを実行します。
chmod 664 .htaccess
- これで根本的に解決できたはずです。パーミッションは666でもいいですが、セキュリティ上の理由からあまり推奨されていないので、664が良いとされています。(所有者とグループには読み取りと書き込みの権限を、その他のユーザーには読み取りの権限を与える)
参考:Apacheの設定ファイルを編集する方法も
- ちなみに、Apacheの設定ファイルを編集することで解決するという記事がありました。こちらで解決できた、という記事も多いので、ご参考までに。
apache2.conf
<Directory "/var/www/html">
・・・
AllowOverride None ## ここのNoneをAllにする
・・・
</Directory>