さくらのVPS上で、Drupal7のお試しサイトを弄っているとき、クリーンURLが有効になっていないことに気がついたので、設定してみた。
管理メニューから環境設定→クリーンURLをクリックしたが、いつもの「クリーンURLを有効にする」チェックボックスが現れない。「設定を保存」ボタンのラベルが、「クリーンURLテストの実行」になっているので、取り敢えずこのボタンを押してテストを実行してみたが失敗した。
クリーンURLを有効にするための3つのチェックポイント
クリーンURLの設定というのは、WordPressでいえばパーマリンク設定に当たり、例えばwww.hogehoge.jp/?q=userというURLがwww.hogehoge.jp/userという風に読みやすいURLに変換することをいう。これらの機能は、Apacheのmod_rewriteが有効になっていることが前提となる。そこで、先ずは、次の3点から確認してみた。
- mod_rewriteが有効になっていなければ端末から次のコマンドを実行
$ sudo a2enmod rewrite
- .htaccessファイル中の次の4行がコメントアウトになっていないかを確認。
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !=/favicon.ico RewriteRule ^ index.php [L]
- モジュール管理画面で、Pathモジュールのチェックボックスが外れていないかどうかの確認。
apache2.confファイルへの追記で正常化
以上の3つのチェックポイントを確認してもだめだったので、次に/etc/apache2フォルダ中のapache2.confファイルを疑ってみる。
apache2.confファイルを弄った覚えもないが、念のため、次の3行を追記。
<Directory /home/www/drupal/> AllowOverride All </Directory>
ファイルを保存した後、次のコマンドで設定を反映させる。
$ sudo service apache2 reload
ここで、もう一度、クリーンURLの設定画面に行くと、いつもの「クリーンURLを有効にする」チェックボックスが現れた。
これで、いつものようにクリーンURLの設定のオン・オフができるようになった。
ただ、apache2.confファイルに追記した内容は、セキュリティやメンテナンス性を考えて、本来は/etc/apache2/site-enabled内のバーチャルホスト設定ファイルに書き込むべきものだろう。