Drupal で SSL を利用する場合は、コードに若干の変更を加えることが必要となります。
以下に、一般のサーバと、外部SSLサーバを経由する XREA での変更方法を提示します。
なお、対象としている Drupal のバージョンは 4.7.x です。
URLアドレスが http://example.com/ から https://example.com/ に変更されるだけの一般的なサーバでは、ほとんどの場合、 SSL 通信にはポート番号 443 が利用されます。 ここでは、サーバの環境変数から取得したポート番号を利用して、SSL かどうかを判断し、$base_url を切り替えます。
以下のように、settings.php の $base_url の行をコメントアウトして、指定行を追加してください。
sites/default/settings.php 109行目付近
# $base_url = 'http://www.example.com'; // NO trailing slash!
//----- ここから -----
$base_url = $_SERVER['SERVER_PORT'] == 443 ? 'https://' : 'http://';
$base_url .= 'www.example.com'; // ここへ http:// を付加しないURLを記述する。終端にスラッシュは付加しないこと
//----- ここまでを追加 -----
XREA では、ポート番号の変更ではなく、外部サーバを経由する方式なので、特殊な方法で対応させます。
以下のように、settings.php と form.inc を変更してください。 URLアドレスは、サンプルを参考に $xrea = array() 内に記述してください。
sites/default/settings.php 109行目付近
# $base_url = 'http://www.example.com'; // NO trailing slash!
//----- ここから -----
global $xrea;
$xrea = array( // 以下、終端にスラッシュは付加しないこと
'ssl_uri' => 'https://ss2.xrea.com/foo.s999.xrea.com', // SSL用URIを指定
'host' => 'foo.s999.xrea.com', // 通常のホスト名のみを指定
'path' => 'drupal' // インストールパスを指定(public_html 直下なら '' )
);
$base_url = preg_match("/ss\d\.xrea\.com/i", $_SERVER['HTTP_VIA']) ? $xrea['ssl_uri'] : 'http://' . $xrea['host'];
$base_url .= $xrea['path'] ? "/" . $xrea['path'] : '';
//----- ここまでを追加 -----
includes/form.inc 1024行目付近
function theme_form($element) {
// Anonymous div to satisfy XHTML compliance.
// ----- ここから -----
global $base_url, $xrea;
if (stristr($base_url, "https://")) {
$element['#action'] = preg_replace('/^\/' . $xrea['host'] . '/i', '', $element['#action']); // $_GET['q'] 対策
$element['#action'] = $xrea['ssl_uri'] . $element['#action'];
}
// ----- ここまでを追加 -----
$action = $element['#action'] ? 'action="' . check_url($element['#action']) . '" ' : '';
return '<form '. $action . ' method="'. $element['#method'] .'" '. 'id="'. $element['#id'] .'"'. drupal_attributes($element['#attributes']) .">\n<div>". $element['#children'] ."\n</div></form>\n";
}