概要
Drupal7をドキュメントルートではなくサブディレクトリで動作させる方法です。
Apacheなどのサーバー設定の詳細は記載しません。ご了承ください。
出来ること 例
/var/www/project をドキュメントルートとし、http://example.com/ でアクセス可能になっている場合、
/var/www/project/drupal にdrupal一式を配置して、以下のようなURLでアクセス可能とする。
http://example.com/drupal
http://example.com/drupal/node/100
http://example.com/drupal/admin/config
修正箇所
drupalのルートディレクトリの.htaccessに追記
/var/www/project/drupal/.htaccess
RewriteBase /drupal
ドキュメントルートに.htaccessを配置(もしくは追記)
/var/www/project/.htaccess
# ルートのアクセスをサブディレクトリdrupalへ
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteRule ^$ /drupal/index.php [L]
# ルートファイルへのアクセスは、そのまま有効とする
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# サブディレクトリdrupalへファイルアクセスを流す
RewriteCond %{DOCUMENT_ROOT}/drupal/%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/drupal/%{REQUEST_URI} -d
RewriteRule ^(.*)$ /drupal/$1 [L]
# その他アクセスはサブディレクトリdrupalへ流す
RewriteRule ^(.*)$ /drupal/index.php?q=$1&%{QUERY_STRING} [L]
ポイント
ドキュメントルートの.htaccessは記述すると安心ですが、必須ではないです。
その運用に合わせて記述を変えてください。
サブディレクトリで動作させる場合、
カスタムテーマで画像のパスを「/sites/all/〜」など独自に指定してるとパスがずれるので対応が大変になるかも。
リンクの生成はDrupalにお任せするのがベスト。
どうしても、自分でパスを生成する必要があるときは、
ex.php
$base_url ・・・ 例 : http://example.com
base_path() ・・・ 例 : /drupal/
などで取得すると楽です。以上です。