- ベストアンサー
SSIでリダイレクトできないでしょうか?
あるページにアクセスがあったら、IPアドレスをチェックして特定のIPアドレスからのアクセスのみ他のページにリダイレクトし、こういう処理をしたというログを保存したいのですが、方法がわかりません。 現在は、SSIで呼び出したスクリプトでIPチェック後、該当すればJavascriptのtop.location.hrefを書き出しています。この方法だとJavascript自体をOFFにされると機能しません。 METAタグのREFRESHではページをロードしてからのリダイレクトになってしまいます。 ページへのリンク自体をCGIへのリンクにしてLocationヘッダを出力すればいいのでしょうが、直接ページにアクセスされるとこの手も使えません。 .htacceessでdenyして、403のエラードキュメントとして上記の処理をするページを作ってみましたが、このエラードキュメント自体にアクセスできません(denyしているので当たり前ですね)。 何かいい方法はないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
SSIの方法は思いつかないので申し訳ないのですが、 サーバが対応していることが条件ですが、 mod_rewriteを使う方法もありかと思います。 これも結局CGIが処理しますが、#2の補足3点は解消できます。 xxx.htmlで終わるようなURLでもCGIが動作、ということが できるので、URLも変更しないで動作させることができます。
その他の回答 (3)
- taseki
- ベストアンサー率66% (155/233)
ちょっとよく解らなかったのですが、ようするに、 ●現在のURLを変更したくない ●CGIのURLをクローラーに拾わせたくない というようなことでしょうか。 かなり力技ですが、条件に応じてページ丸ごとのHTMLを吐き出すスクリプトを、SSIで埋め込む、というのはどうでしょうか。 ANo.1 の方がおっしゃっているスクリプトの出力を、SSIでページに埋め込む、そのページHTMLファイル自体には <!--#~ しか書いていない、という意味です。
お礼
回答ありがとうございます。
補足
> かなり力技ですが… いやいや、ほんとにすごい力技ですね(^_^;)
- 2NN
- ベストアンサー率40% (143/353)
SSIで何とかしたいというところ、再度申し訳ないのですが、 .htaccessが使える環境であれば、 DirectoryIndex にindex.cgi を追加するなどして表示させれば CGIでもSEO対策は全く問題ないと思います。 SSIにこだわる理由が解らないので。。
補足
> SSIにこだわる理由が解らないので… あまり詳しく説明できないので申し訳ないですが、 ●対象とするページは300ページほどあります。 ●クローラにCGIのパスを拾わせたくない、あるいは個々のページのURLを拾わせたい ●上記のURLがすでにクローラによってインデックスされている といったところでしょうか。 で、そのページに直接アクセスされた場合にも対応可能な方法として、SSIしか思いつかないもので(^_^;)
- 2NN
- ベストアンサー率40% (143/353)
CGIで目的のページへ飛ばすのではなくて、 CGIで目的のページを読み込んで出力するという方法をとれば 解決すると思います。 通常はa.html をopen してprint 、 特定のIPのみ、b.html をopen してprint 、 という感じで。 目的のページ自体は直接アクセスできないように ディレクトリなどに入れて、.htaccessで閲覧できないようにします。
お礼
早速の回答ありがとうございます。
補足
> 目的のページ自体は直接アクセスできないようにディレクトリなどに入れて、.htaccessで閲覧できないようにします。 これはちょっとできないんです(主にSEO上の理由から)。 > CGIで目的のページを読み込んで出力する… CGIではなく、SSIでなんとかしたいんですが…。
お礼
回答ありがとうございます。