- 締切済み
URL リダイレクト
htmlアクセス時においてURLリダイレクトする方法についてお伺いします。 htmlの<meta refresh=..>やjavascriptのlocation.replace、.htaccessのredirectとリダイレクトの方法はいろいろあるようですが、今回はcgi+ssiで実現したいと思っています。 そこで質問なのですが、htmlからSSIを使用して<--!exec cgi="./redirect.cgi"-->のようにしてリダイレクトさせるにはどうすればよいのでしょうか。 cgiではhttpdヘッダのlocatinでURLを指定することで、リダイレクトは可能だと思います。 そしてそのリダイレクトするcgiを直接呼び出したり、フォームで呼び出すことでの動作は正常に確認しました。 しかしhtmlからSSIのexecやvirturlなどを使用してのリダイレクトがどうしてもできません。もちろんSSI,EXEC使用可能なサーバーです。 どうぞよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- steel_gray
- ベストアンサー率66% (1052/1578)
SSIの動作を考えてみるとなぜLocationヘッダが意味がないのかわかると思います。 サーバはSSIの構文解析の過程でperlスクリプトを呼び出し、その出力結果を元のhtmlに挿入してブラウザに送出します。 SSI用のPerlスクリプトの吐き出す結果はヘッダ以外の部分だけがhtmlの一部として間接的にブラウザに渡るのでヘッダは無意味なのです。 SSIについてはあまりわかっていないのでうまく説明できているかどうか・・・ 無意味とか言い切っちゃったけどlocation以外の・・例えばExpires(有効期限)とかはサーバがキャッシュしていいかどうかの参考に見ているかも??
- steel_gray
- ベストアンサー率66% (1052/1578)
SSIで呼び出してLocationヘッダを出力しても意味がないのでそのスクリプトで<meta refresh=..>を出力してはどうでしょうか?
お礼
>>SSIで呼び出してLocationヘッダを出力しても意味がない なるほど出来ないのですね。 サーバーが.htaccess使用不可で、javascirptを使用せず、なおかつブラウザに履歴が残らない方法を考えていたのですが、残念です。 ありがとうございました。 失礼ではありますが後学のために、SSIで出来ない理由をご教授いただけるとものすごく助かります。
お礼
Locationについては何となく理解いたしました。 Expiresについて調べてみたいと思います。質問におつきあい頂き、ありがとうございました。