WordPress
Ubuntu
apache2

WordPressのパーマリンクが表示されないときの解決法(ubuntu × apache2)

More than 5 years have passed since last update.

WordPressで結構引っかかることが多いのが、サーバとの兼ね合い

特にパーマリンクがうまくつながってくれない問題は、よく起こるのでは

ググって出てくるのは、AllowOverride None を All にしろとばかり

もうやってるっちゅーの!!

半泣きになりながらも、解決法を探っていたら、やっと見つけた

Ubuntu独特のmoduleを有効にする方法が、躓きの原因だったようだ


mod_rewriteを有効にする

Ubuntuでは、apache2をインストールした時に、デフォルトでmod_rewriteがインストールされている

しかし、有効になっていないので、それを有効にする作業が必要


rewrite.loadがあることを確認する

% cat /etc/apache2/mods-available/rewrite.load

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so


mod_rewriteを有効にする

% sudo a2enmod rewrite

有効になったことを確認する

% ls -al /etc/apache2/mods-enabled/rewrite.load

lrwxrwxrwx 1 root root 30 Feb 2 20:12 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load


apache設定ファイルのAllowOverrideを書き換える

よく httpd.conf というファイル名で見られる、いわゆるapacheの設定ファイルみたいなものは、Ubuntuでは、apache2.confであり、しかも、AllowOverrideについては、そのファイルではなく

/etc/apache2/sites-available/default

に書き込むのだそうだ

私自身は結構ハマったところだが、Ubuntuを使い慣れている方は大丈夫なのだろう


/etc/apache2/sites-available/default

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews
# AllowOverride None
AllowOverride All
Order allow,deny
allow from all
</Directory>

そしてapacheを再起動する

% sudo service apache2 restart


WordPressのパーマリンクRewrite設定を確認する

パーマリンク設定をデフォルト以外にして更新すると、wordpressフォルダの下に.htaccessが生成される

自動生成されない場合は、以下のファイルを.htaccessとしてアップロードすればよいが、そもそも.htaccessが自動生成されない環境では、今後も問題が起こるのではないかと思う

その.htaccessが正しく書かれているか確認する


.htaccess

# BEGIN WordPress

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


参考にしたサイト↓

How to enable mod_rewrite in Apache2 on Debian or Ubuntu

WordPressの引越しでパーマリンクの404 Not Foundエラーが発生