アイキャッチ画像: デスクの上でパソコンを使用している

ここではDrupalのクリーンURL機能について解説します。

クリーンURLとはDrupalにGETメソッドによるクエリ文を、ウェブサーバーのURL加工機能(その多くはApacheのRewriteモジュール)によって、余計なURLパラメーターを省き、URLをクリーンにする機能です。

Wordpressをご存知の方で言えば、パーマリンクの設定に似ているかもしれません。

クリーンURLの例

具体的な例を示すと、クリーンURLを有効にするとURLが下記の様に変わります。

違いは一目瞭然ですね。URLの?q=の部分が省略されています。

クリーンURLの利点

クリーンURLを利用することによって、こんな利点があると言われています。

  • URLを階層化できるのでSEOに良い。
  • URLの見た目がシンプルになる。

Drupalで構築されたサイトのその殆どはクリーンURL機能を有効にされています。特にSEOを意識したサイトならクリーンURLを有効にして損することはありません。

クリーンURLの利用条件

クリーンURLを利用するにはサーバー側での対応が必須となり、Apacheでは下記の条件が当てはまります。

  • mod_rewriteモジュールが利用できる状態であるか。
  • .htaccess等でmod_rewriteの設定が可能であるか。

新し目のサーバーならまず動くとは思いますが、古いレンタルサーバーなどではサポートしていない場合があります。

RewriteBaseの書き換えが必要なパターン

Drupalを運用するサイトがドメインのルートかつ一般的なサーバー設定なら、初期設定で問題ありませんが、下記に該当するようなサーバー設定を行なっている場合はRewriteBaseの設定が必要です。

  • サブディレクトリで運用している (例: example.com/drupal/ )
  • VhostAliasモジュールを利用している
  • UserDirモジュールを利用している

.htaccessの修正

Drupalをインストールしたルートフォルダ内にある.htaccessをテキストエディタで開きます。

ドメインのルートがDrupalの場合は、110行目をアンコメントして下記の様に修正します。

# If your site is running in a VirtualDocumentRoot at http://example.com/,
# uncomment the following line:
RewriteBase /

サブディレクトリでDrupalを運用している場合は106行目をアンコメントし、パスを適宜変更してください。例えば、http://example.com/drupal7siteと言うURLで運用している場合は下記の様に修正します

# Modify the RewriteBase if you are using Drupal in a subdirectory or in a
# VirtualDocumentRoot and the rewrite rules are not working properly.
# For example if your site is at http://example.com/drupal uncomment and
# modify the following line:
RewriteBase /drupal7site

手前味噌ですが、弊社の山中がこれらトラブルの対処方法を書いておりますので、もしお困りの場合はご覧ください。

Drupal7でclean URL(クリーンURL)が使えないと思った時の対処法

クリーンURLが利用可能か確認して有効化

管理ページ > 環境設定 > クリーン URL (admin/config/search/clean-urls)のページ移動します。

ここでクリーンURLを有効にするのチェックボックスにチェックを入れられれば、クリーンURLが利用可能な状態です。有効にして設定を保存しましょう。

以上で完了です。設定を有効にするとDrupalで生成しているURLが自動的にクリーンURLに変更されます。ただし、ノードコンテンツの本文(Body)などで既に入力したURLは変換されないので注意してください。SEOを気にする場合はそれらも統一したほうが良いでしょう。

クリーンURLが有効でもGETクエリは使えます

クリーンURLが有効な状態であっても、?q=が付いたURLでもアクセスすることができます。本番で運用していたサイトをローカルに持ってきて、クリーンURLが動かなくて管理画面にアクセスできない、という時の対処にもなります。