質問 > その他 > 特定のSSL領域にアクセスした時にNot Foundになる |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
daidou |
投稿日時: 2008/7/11 13:26
対応状況: −−−
|
半人前 登録日: 2008/5/30 居住地: 投稿: 15 |
特定のSSL領域にアクセスした時にNot Foundになる 特定の条件のもと特定のSSL領域にアクセスするとNotFoundになる現象が解決できずに困っているので書き込みさせて頂きます。
以前に別スレで書かせて頂いたのですが、スレを立てた時は私のサーバ独自のものかと思っていたのですが、調べるにあたり異なる環境でも起こりそうだったので別スレを立てさせてもらいました。 ■環境 サーバ:ファーストサーバ ギガント2 ECCUBE:2.1.2 PHP :5.2.6 MYSQL :MySQL 5.0.27-standard 非SSL領域:/virtual/www/ SSL領域:/virtual/ssl/ ⇒非SSL領域と同じファイルを設置 CGI領域:/virtual/cgi-data/ install.phpファイル <?php define ('ECCUBE_INSTALL', 'ON'); define ('HTML_PATH', '/virtual/www/'); define ('SITE_URL', 'http://ドメイン/'); define ('SSL_URL', 'https://ドメイン/'); define ('URL_DIR', '/'); define ('DOMAIN_NAME', ''); define ('DB_TYPE', 'mysql'); define ('DB_USER', '☆'); define ('DB_PASSWORD', '☆'); define ('DB_SERVER', ☆'); define ('DB_NAME', '☆'); define ('DB_PORT', ''); define ('DATA_PATH', '/virtual/cgi-data/'); define ('MOBILE_HTML_PATH', HTML_PATH . 'mobile/'); define ('MOBILE_SITE_URL', SITE_URL . 'mobile/'); define ('MOBILE_SSL_URL', SSL_URL . 'mobile/'); define ('MOBILE_URL_DIR', URL_DIR . 'mobile/'); ?> ■現象 以下の動作を行うと必ず同じ現象が起こります。 1.商品を購入する(カートはSSL) 2.もう一度トップに戻る 3.商品をもう一度購入する 上の動作を行った時に3で、カーとの中を見て、『購入画面手続きへ』をクリックするとNotFoundになります。 その際の現象としてURLに https://www.[ドメイン].com/virtual/ssl/shopping/deliv.php?transactionid=[変数] となります。 【virtual/ssl/】を削除するとうまく動作するのですが、なぜか2回目だけ【virtual/ssl/】が挿入されてしまいます。 ■試した改修 ・テンプレートファイルを改修 formタグで指定しているリンク先をPHPで吐き出すのではなく、直接テンプレートに書き込みました。 ・data\class\pages\frontparts\LC_Page_FrontParts_LoginCheck.phpを改修 以下の通り行いましたがダメでした。 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=thread&topic_id=2104&forum=1&post_id=7380#forumpost7380 ずっと解決できずにいるんで、何かご助言いただければ幸いです。 何卒、よろしくお願いします。 ■前スレ http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=2440&forum=2&post_id=8917#forumpost8917 |
kuro |
投稿日時: 2008/7/23 22:18
対応状況: −−−
|
半人前 登録日: 2008/7/23 居住地: 投稿: 20 |
Re: 特定のSSL領域にアクセスした時にNot Foundになる こんにちは。時間が経ってしまっているので、もうご覧になってないかもしれませんが・・・
私の環境でも同じことが起こってました。 多分、ssl用のディレクトリが、非ssl用のディレクトリ外に設置されているサーバではそうなるんじゃないかと思います。 ■私の環境 サーバ:CPI 共用サーバ ECCUBE:2.2.0-beta PHP :5.2.4 SQL :PostgreSQL 8.1.10 非SSL領域:/usr/home/ユーザ名/html SSL領域:/usr/home/ユーザ名/secure ■対策 ・data\class\pages\LC_Page.phpを修正 ***245行目付近*** $realPath = realpath(HTML_PATH . substr_replace($path, "", 0, strlen(URL_DIR))); ↓ if(isset($_SERVER['HTTPS'])){ $realPath = realpath("/usr/home/ユーザ名/secure/" . substr_replace($path, "", 0, strlen(URL_DIR))); }else{ $realPath = realpath(HTML_PATH . substr_replace($path, "", 0, strlen(URL_DIR))); } ***259行目付近*** $htmlPath = rtrim(HTML_PATH, "/"); ↓ if(isset($_SERVER['HTTPS'])){ $htmlPath = rtrim("/usr/home/ユーザ名/secure/", "/"); }else{ $htmlPath = rtrim(HTML_PATH, "/"); } ※/usr/home/ユーザ名/secure/の部分には、自分のSSL領域のパスを入れました。 非SSLの時もSSLの時も、常に「HTML_PATH」で処理しているので、SSL領域のパスに「HTML_PATH」が含まれてない場合は、パスが一致せず上手く消えてくれないみたいです。 とりあえず私の方ではNot Foundになることはなくなりましたが、もしこのやり方がマズイ、ということがありましたらどなたかご指摘いただけませんでしょうか? |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |