本文へ移動
STUDIO UMI
DRUPAL BLOGDrupalブログ

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

Machiko Yamanaka

こんにちは。 スタジオ・ウミでプログラマーをしている山中です。

今回の記事ではクリーンURLが使えない時の対処法を紹介します。
いくつが原因が考えられますが 大体.htaccess絡みです。

3つのケースとその解決方法についてお話しますね。

1. drupalサイトがサブディレクトリにある場合

たとえばアドレスが http://example.jp/drupal ←こんな感じの時、.htaccess内で以下の記述を探してください。

  # 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 /drupal
  #
  # If your site is running in a VirtualDocumentRoot at http://example.com/,
  # uncomment the following line:
  # RewriteBase /

ここの最後の行のRewriteBaseをコメントから外して以下の様に変更します。
例えばhttp://example.jp/drupalなら・・・

  RewriteBase /drupal

RewriteBaseを有効にしたサイトをサブディレクトリがない場所に移転する時は行頭に#を入れてこの記述をコメントアウトしてくださいね!

2. .htaccess内に『RewriteRule』がない場合

サイトのルートフォルダにある.htaccessを見てもらうと下の方に下記のような記述があるかと思います。

 # Various rewrite rules.
<IfModule mod_rewrite.c>
  RewriteEngine on

  # If your site can be accessed both with and without the 'www.' prefix, you
〜〜〜〜〜省略〜〜〜〜〜〜
  # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} !=/favicon.ico
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
</IfModule>

最後から2行目の部分が一番怪しい感じがしますね!
RewriteEngineをonにしてRewriteRuleで指定してあげないといけないようです。

3. サイトのルートフォルダ内に.htaccessファイルが無い場合

.htaccessファイルがサイトのルートフォルダ上になければdrupalのコアをダウンロードしてきて展開してでてきたフォルダの中にある.htaccessファイルをコピペしてください。

ここからは経験談ですが、とあるDrupalサイトの改修を行った時のことです。
そのサイト用に.htaccessが変更されていたようで、サイトのデータやファイル群を開発環境に移して開発環境においたサイトを見てみたところブラウザに閲覧権限がねーよ!(permission dinied)と怒られてしまいました。
でも.htaccess内を見て何がだめなのか判断するのが非常に面倒になってしまったので.htaccessを削除!
.htaccessファイルを削除した後、再度見てみたところトップページが表示されました。

でもサブページにアクセスできません。
/userページにアクセスもできなかったらログインすらできないじゃない!

そこでURLパラメータ形式で送ってみたところアクセスできました。
(例えば http://studio-umi.jp/services/website なら http://studio-umi.jp/?q=services/website に)

もしかして、と思い手元にダウンロードしてあるdrupal最新版のファイルからコピーした.htaccessを試しに入れてみたところ問題なくサイトを見ることができました!

大体は上記の解決策で解決するはず! その他の要因としてはサーバでmod_rewriteが入っていない・あるいは許可されていないというのが考えられます。 自分でサーバの設定を変えたりできない場合はあきらめて他のサーバを使った方が良いと思います。

スタジオ・ウミは15年以上の実績を誇るDrupal専門の開発会社です。豊富な知見とノウハウでDrupalサイトの開発や技術サポートなどDrupal関連サービスをワンストップでご提供します。

RECRUIT

新たなステージを共に歩んでいける
コアメンバーを募集しています

採用情報

CONTACT

お仕事のご相談やお見積依頼など、
お気軽にお問い合わせください。

お問い合わせ