Index: /branches/version-2_13-dev/html/install/sql/insert_data.sql
===================================================================
--- /branches/version-2_13-dev/html/install/sql/insert_data.sql	(revision 22856)
+++ /branches/version-2_13-dev/html/install/sql/insert_data.sql	(revision 22922)
@@ -1256,4 +1256,5 @@
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('MYPAGE_ORDER_STATUS_DISP_FLAG', 'true', 1412, 'MYページ：ご注文状況表示フラグ');
 INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('DEFAULT_COUNTRY_ID', 392, 1413, 'デフォルト国コード ISO_3166-1に準拠');
+INSERT INTO mtb_constants (id, name, rank, remarks) VALUES ('USE_NORMALIZE_HOSTNAME', true, 1414, 'ホスト名を正規化するか (true:する false:しない)');
 
 
Index: /branches/version-2_13-dev/data/class/SC_Initial.php
===================================================================
--- /branches/version-2_13-dev/data/class/SC_Initial.php	(revision 22856)
+++ /branches/version-2_13-dev/data/class/SC_Initial.php	(revision 22922)
@@ -58,4 +58,5 @@
         $this->resetSuperglobalsRequest();  // stripslashesDeepGpc メソッドより後で実行
         $this->setTimezone();               // 本当はエラーハンドラーより先に読みたい気も
+        $this->normalizeHostname();         // defineConstants メソッドより後で実行
     }
 
@@ -489,3 +490,48 @@
         date_default_timezone_set('Asia/Tokyo');
     }
+
+    /**
+     * ホスト名を正規化する
+     *
+     * @return void
+     */
+    function normalizeHostname()
+    {
+        if (
+            // パラメーター
+            !USE_NORMALIZE_HOSTNAME
+            // コマンドライン実行の場合
+            || !isset($_SERVER['REQUEST_URI'])
+            // POSTの場合
+            || $_SERVER['REQUEST_METHOD'] === 'POST'
+        ) {
+            // 処理せず戻る
+            return;
+        }
+
+        $netUrlRequest = new Net_URL($_SERVER['REQUEST_URI']);
+        // 要求を受けたホスト名
+        $request_hostname = $netUrlRequest->host;
+
+        $netUrlCorrect = new Net_URL(SC_Utils_Ex::sfIsHTTPS() ? HTTPS_URL : HTTP_URL);
+        // 設定上のホスト名
+        $correct_hostname = $netUrlCorrect->host;
+
+        // ホスト名が不一致の場合
+        if ($request_hostname !== $correct_hostname) {
+            // ホスト名を書き換え
+            $netUrlRequest->host = $correct_hostname;
+            // 正しい URL
+            $correct_url = $netUrlRequest->getUrl();
+            // 警告
+            $msg = 'ホスト名不一致を検出。リダイレクト実行。';
+            $msg .= '要求値=' . var_export($request_hostname, true) . ' ';
+            $msg .= '設定値=' . var_export($correct_hostname, true) . ' ';
+            $msg .= 'リダイレクト先=' . var_export($correct_url, true) . ' ';
+            trigger_error($msg, E_USER_WARNING);
+            // リダイレクト(恒久的)
+            SC_Response_Ex::sendHttpStatus(301);
+            SC_Response_Ex::sendRedirect($correct_url);
+        }
+    }
 }
