• ベストアンサー

SSIでリダイレクトできないでしょうか?

あるページにアクセスがあったら、IPアドレスをチェックして特定のIPアドレスからのアクセスのみ他のページにリダイレクトし、こういう処理をしたというログを保存したいのですが、方法がわかりません。 現在は、SSIで呼び出したスクリプトでIPチェック後、該当すればJavascriptのtop.location.hrefを書き出しています。この方法だとJavascript自体をOFFにされると機能しません。 METAタグのREFRESHではページをロードしてからのリダイレクトになってしまいます。 ページへのリンク自体をCGIへのリンクにしてLocationヘッダを出力すればいいのでしょうが、直接ページにアクセスされるとこの手も使えません。 .htacceessでdenyして、403のエラードキュメントとして上記の処理をするページを作ってみましたが、このエラードキュメント自体にアクセスできません(denyしているので当たり前ですね)。 何かいい方法はないでしょうか?

  • CGI
  • 回答数4
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • 2NN
  • ベストアンサー率40% (143/353)
回答No.3

SSIの方法は思いつかないので申し訳ないのですが、 サーバが対応していることが条件ですが、 mod_rewriteを使う方法もありかと思います。 これも結局CGIが処理しますが、#2の補足3点は解消できます。 xxx.htmlで終わるようなURLでもCGIが動作、ということが できるので、URLも変更しないで動作させることができます。

maomao55
質問者

お礼

回答ありがとうございます。

その他の回答 (3)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.4

ちょっとよく解らなかったのですが、ようするに、 ●現在のURLを変更したくない ●CGIのURLをクローラーに拾わせたくない というようなことでしょうか。 かなり力技ですが、条件に応じてページ丸ごとのHTMLを吐き出すスクリプトを、SSIで埋め込む、というのはどうでしょうか。 ANo.1 の方がおっしゃっているスクリプトの出力を、SSIでページに埋め込む、そのページHTMLファイル自体には <!--#~ しか書いていない、という意味です。

maomao55
質問者

お礼

回答ありがとうございます。

maomao55
質問者

補足

> かなり力技ですが… いやいや、ほんとにすごい力技ですね(^_^;)

  • 2NN
  • ベストアンサー率40% (143/353)
回答No.2

SSIで何とかしたいというところ、再度申し訳ないのですが、 .htaccessが使える環境であれば、 DirectoryIndex にindex.cgi を追加するなどして表示させれば CGIでもSEO対策は全く問題ないと思います。 SSIにこだわる理由が解らないので。。

maomao55
質問者

補足

> SSIにこだわる理由が解らないので… あまり詳しく説明できないので申し訳ないですが、 ●対象とするページは300ページほどあります。 ●クローラにCGIのパスを拾わせたくない、あるいは個々のページのURLを拾わせたい ●上記のURLがすでにクローラによってインデックスされている といったところでしょうか。 で、そのページに直接アクセスされた場合にも対応可能な方法として、SSIしか思いつかないもので(^_^;)

  • 2NN
  • ベストアンサー率40% (143/353)
回答No.1

CGIで目的のページへ飛ばすのではなくて、 CGIで目的のページを読み込んで出力するという方法をとれば 解決すると思います。 通常はa.html をopen してprint 、 特定のIPのみ、b.html をopen してprint 、 という感じで。 目的のページ自体は直接アクセスできないように ディレクトリなどに入れて、.htaccessで閲覧できないようにします。

maomao55
質問者

お礼

早速の回答ありがとうございます。

maomao55
質問者

補足

> 目的のページ自体は直接アクセスできないようにディレクトリなどに入れて、.htaccessで閲覧できないようにします。 これはちょっとできないんです(主にSEO上の理由から)。 > CGIで目的のページを読み込んで出力する… CGIではなく、SSIでなんとかしたいんですが…。

関連するQ&A

  • デバイスごとにリダイレクト先を分ける方法

    現在、PC用のページがあり、そのhead内に <script type="text/javascript"><!-- if(navigator.userAgent.match(/iPhone|iPod|Android/)){ location.href = 'スマホ用URL'; } --> </script> という記述をし、スマホからのアクセスの場合、スマホ用のページへリダイレクトされるようにしています。 これを 空のHTMLページを作り、そのページにアクセスがあった時に、 PCからアクセス→PC用のページにリダイレクト スマホからのアクセス→スマホ用のページにリダイレクト という風にしたいのですが、可能でしょうか?

  • 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使用可能なサーバーです。 どうぞよろしくお願いします。

    • 締切済み
    • CGI
  • htaccess で特定IP以外をリダイレクト

    特定IPの以外のアクセスは指定URLへリダイレクトさせたいのですが、うまく行きません。 ↓のように.htaccessに記述しているのですが間違っているんでしょうか? ------------------------------------------- order allow,deny allow from XXX.XXX.XXX.XXX deny from all ErrorDocument 403 http://yahoo.co.jp ------------------------------------------- 「XXX.XXX.XXX.XXX」のIPは自分のIPを記述しているので、yahooにリダイレクトされないのが正しい動作なのですがyahooへリダイレクトされてしまいます。 お詳しい方がおられましたらご回答宜しくお願い致します。

  • PHPでのリダイレクト

    PHPでウェブアプリを作成しています。 PHPでのリダイレクト方法として、 header("Location: xxxxx.php"); を使うことが多いのですが、HTML出力のあとで使おうとすると、 「Warning: Cannot modify header information - headers already sent by (~」というPHPエラーが発生します。 HTML出力前にリダイレクトができればいいのですが、 HTMLをかいたあとに、PHP処理をさせている処理構造上、header関数以外でリダイレクトする方法はあるのでしょうか?

    • ベストアンサー
    • PHP
  • htaccessで、特定IP以外をリダイレクトさせたい。

    初心者です。 .htaccessを使ってメンテナンス画面を表示させようと思っています。 条件として、 ・特定のファイルへのアクセスを、リダイレクトさせる。 ・動作確認を行うため、自分のIPの場合はリダイレクトさせない。 ファイルに対してのリダイレクトは、 Redirect /aaa/aaa.php /maintenance/maintenance.html 特定IPに対して、ディレクトリ単位のリダイレクトは、 order deny,allow deny from all allow from xxx.xxx.xxx.xxx ErrorDocument 403 /maintenance/maintenance.html というところまでは解決したのですが、 「特定IPに対して、ファイル単位のリダイレクト」 は、どのように指定すればよいのでしょうか?

    • ベストアンサー
    • HTML
  • .htaccessでのdenyを記録する方法は?

    不正なアクセスに対して、.htaccessでIPアドレスでdenyするようにしていますが、denyする対象を追加していくときりがないので、設定後一定期間アクセスがないものは外すようにしています。 エラーログを見られるサーバーはエラーログで判断していますが、ログを見られないサーバー(レンタルサーバー)もあるので、.htaccessでのdenyを独自に記録したいと思います。 403エラーのエラエードキュメントとしてログを記録するcgiを指定すると、このcgiにもアクセスできないので記録できません。 特定のIPアドレスからのアクセスに対して、これを記録するcgiへリダイレクトするというようなことはできないでしょうか?

  • UAによるリダイレクト

    スマートフォンからのアクセスを他のページに飛ばすために どうにか方法がないかと思って、いろいろ調べて勉強しております。 そこで以下のような記述でできることが分かったのですが、 javascriptなどについて詳しくないため、-1や0の意味が分かりません。 -1、0はどういう意味なのでしょうか? <script type="text/javascript"> if (document.referrer.indexOf('muay-thai-pck.com') == -1 && ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0)) { location.href = 'url'; } </script>

  • URLのリダイレクトについて

    現在イントラネット上でWebページ公開のテストを行っています。 以下の構成を考えいます。  ・ドキュメントルート直下にindex.htmlを配置  ・ドキュメントルート/HOGE にindex.htmlを配置 (1)http://ドメイン/  のURLでブラウザを立ち上げると、index.htmlが正しく表示されます。 次に (2)http://ドメイン/HOGE/  のURLでブラウザを立ち上げると、HOGE配下のidex.htmlが正しく表示されます。 次に (3)http://ドメイン/HOGE  のURLでブラウザを立ち上げると、HOGE配下のidex.htmlが表示されますが、  URLが 『http://IPアドレス/HOGE/ となってしまいます。 IPアドレスが表示されないようにする方法はあるのでしょうか? いろいろ調べてみて、METAタグ等を使って、http://ドメイン/HOGE/ にリダイレクトするように したのですが、Webブラウザが無限ループしていまいます。 何かいい方法はあるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • 正しいドメインリダイレクトの方法

    www.aaa.com と www.bbb.com の二つのドメインをエイリアス設定?してあって、どちらのドメインにアクセスしても同じファイルを閲覧する状態になっています。 それを今後、www.aaa.com のみで運用するため、一定期間 www.bbb.com のドメインからリダイレクトで www.aaa.com へ転送する設定をしたいと思っています。いろいろしらべると htaccess で301リダイレクトをするのがSEO上、正しい方法であると書かれていたのですが、、、 上記のような条件で、下記のようなhtaccessで設定しようとすると、 Redirect permanent / http://www.aaa.com サーバでリダイレクトが連続(同じファイルを何度も読み込む)して、サーバエラーになってしまいます。 ↓この人と同じような状態です。 http://q.hatena.ne.jp/1115614347 そこで、 <script type=”text/javascript”> <!-- if (location.hostname == ’www.bbbcom’) location.replace(’http://www.aaa.com/’); // --> </script> と設定すると、希望どおりの動作をしてくれるのですが、 SEOスパムとみなされる可能性があると書かれていたりして不安です。 こういった場合、正しい設定の方法はどのような方法がありますでしょうか?

    • ベストアンサー
    • HTML
  • .htaccessでリダイレクト

    サイトのディレクトリ構造やファイル名を変えたため、 外部からのリンクが切れてしまっています。 .htaccessを設置したディレクトリ以下で ファイルが見つからない場合、TOPページにリダイレクト、 という動作を実現するにはどう記述すれば良いのでしょうか。 TOPページを http://www.hoge.com/ とすると、 とりあえず思いつくのは ErrorDocument 404 / なのですが、404エラーをエラー表示以外の リダイレクトに使うのが正しいのか分かりません。 こういう目的のリダイレクトの書式もあるのでしょうか。 よろしくお願いします。