https://www.example.jp/form.html
にアクセスしたときの form.html に張られている相対リンク(例えば、./help.html) をクリックしたときに https://www.example.jp/help.html から http://www.example.jp/help.html に変換する方法を教えてください。
実際の例だと、はてなさんのログインページです。
ログインページ
https://www.hatena.ne.jp/login
から
ヘルプページ
https://www.hatena.ne.jp/what
にアクセスすると
http://www.hatena.ne.jp/what
に変換されます。
おそらく、mod_rewrite を使うことになるのでしょうか?
実際のサイトはただの Perl を使ったメールフォームです。/cgi-bin/ にしかプログラムを設置できません。
確認・完了画面はテンプレートからヘッダやメニュー画像を <base> タグで https の URL を指定して画像や相対リンクを表示させています。そのとき、ページ全体の相対リンクが https になって困っています。
もっとスマートな方法があるといいのですが・・・
CGI 中で環境変数から
http://www.psl.ne.jp/httpd.shtml
$ENV{SERVER_NAME} や $ENV{SCRIPT_NAME} を使って呼び出されている URL を知ることが出来ますから、CGI 中で絶対パスを生成してしまってはどうでしょう?
相対リンクで無いといけない理由等がありますでしょうか?
また、単純な質問としてヘッダやメニュー画像を SSL でリンクしている理由がよく分かりませんでした。全部 http ではダメでしょうか?
回答ありがとうございます。
相対リンクで無いといけない理由は、プログラムを知らない人でも同じプログラムを使ってテンプレートを作成するためです。絶対パスだとサーバーにアップロードしなくてはならないので不便です。
SSL のフォームは一回呼び出すとすべてのリンクが https になります。理由は、ページすべて(画像ファイルを含む)を保護してあげる必要があります。(そうしないと「このページにはセキュリティで保護されている項目と保護されていない項目が含まれています。保護されていない項目を表示しますか?」と表示されます)
そのため、内部のリンクもフル URL にされている場合が多いです。または、別ウインドウにしてリンクしない場合もあります。
質問の説明が不十分だったかも知れません。