Drupal7でクリーンURLを有効にする

さくらのVPS上で、Drupal7のお試しサイトを弄っているとき、クリーンURLが有効になっていないことに気がついたので、設定してみた。

管理メニューから環境設定→クリーンURLをクリックしたが、いつもの「クリーンURLを有効にする」チェックボックスが現れない。「設定を保存」ボタンのラベルが、「クリーンURLテストの実行」になっているので、取り敢えずこのボタンを押してテストを実行してみたが失敗した。

CleanURLsTest

クリーンURLを有効にするための3つのチェックポイント

クリーンURLの設定というのは、WordPressでいえばパーマリンク設定に当たり、例えばwww.hogehoge.jp/?q=userというURLがwww.hogehoge.jp/userという風に読みやすいURLに変換することをいう。これらの機能は、Apacheのmod_rewriteが有効になっていることが前提となる。そこで、先ずは、次の3点から確認してみた。

  1. mod_rewriteが有効になっていなければ端末から次のコマンドを実行
    $ sudo a2enmod rewrite
    
  2. .htaccessファイル中の次の4行がコメントアウトになっていないかを確認。
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !=/favicon.ico
    RewriteRule ^ index.php [L]
    
  3. モジュール管理画面で、Pathモジュールのチェックボックスが外れていないかどうかの確認。

apache2.confファイルへの追記で正常化

以上の3つのチェックポイントを確認してもだめだったので、次に/etc/apache2フォルダ中のapache2.confファイルを疑ってみる。

apache2.confファイルを弄った覚えもないが、念のため、次の3行を追記。

<Directory /home/www/drupal/>
    AllowOverride All
</Directory>

ファイルを保存した後、次のコマンドで設定を反映させる。

$ sudo service apache2 reload

ここで、もう一度、クリーンURLの設定画面に行くと、いつもの「クリーンURLを有効にする」チェックボックスが現れた。

CleanURLsTest02

これで、いつものようにクリーンURLの設定のオン・オフができるようになった。

ただ、apache2.confファイルに追記した内容は、セキュリティやメンテナンス性を考えて、本来は/etc/apache2/site-enabled内のバーチャルホスト設定ファイルに書き込むべきものだろう。