今、持っているサイトのいくつかの特定のページでリダイレクトをかけたいと思っています。
ただ、全て同じテンプレートなので、特定のページにのみリダイレクトのソースを埋め込むことが出来ません。その中で特定のものだけをリダイレクトさせたいと思っています。
例えば、
a.html→e.htmlにリダイレクトさせたい
b.html→リダイレクトさせない
c.html→e.htmlにリダイレクトさせたい
d.html→リダイレクトとさせない
といったものなのですが、ソースコードは全て同じになっています。
そのためのプログラムをどのように作ったら良いのか分りません。
恐らく、javascriptで作るのではないかと思っているのですが・・・
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
う・・・大変申し訳ないです。
ASPはアプリケーションプロバイダでアクティブサービスページですね^^;
それであればヘッダ部分に以下を記述してください
<script>
var strFullFileName = window.location.href;
var strFileName =strFullFileName.substring(path.lastIndexOf('/',path.length)+1,path.length);
if(strFullFileName=='a.html'){location.href='e.html';}
if(strFullFileName=='c.html'){location.href='e.html';}
//~~~もしその他あるのであれば全て同じ方法で記述~~~
</script>
以上です。
ASPを言語のASPと勘違いしてしまいました。大変申し訳ないです^^;
ASP(アプリケーションサービスプロバイダ)であれば確かにクライアント側しかいじってはいけないですね。混乱させてしまいすみませんでした~^^
ご回答ありがとうございます。
こちらこそ、分りづらいご説明で申し訳ありませんでした。
早速、教えていただいたスクリプトを埋め込み、動作も問題なくしていることを確認できました。
大変丁寧なご対応、ありがとうございました!
No.2
- 回答日時:
ASPですか・・・w
奇遇にも私の専門分野です^^; ASP1.0の頃からずっとやってきました。ちなみにASPのショッピングサイトは実運用してますw(最近は開発はやってない&ASP.NETはやっていませんが。)
まず、ショッピングサイトの構築であるというお話ですので、開発上での基本ルールが前提としてJSでなければいけないという場合(たぶんないはず。通常であれば百害あって一利なしなので・・・)であれば別ですが、基本的にはリダイレクトをかけるのであればサーバー側で条件分岐するページをつくるべきです。JSで記述するのは基本的にはクライアントに一度DLさせなければいけないため、無用な通信が発生するために遅くなります。また、遷移先のページで戻るボタンを押下(お仕事でやられているようなので専門用語でw)した場合に遷移用のページが起動してしまう為にまた次のページに遷移してしまいます。上記理由から自動で移動する場合にはリダイレクト用のASP(HTMLなし)を作成するべきです。
例えば、
>a.html→e.htmlにリダイレクトさせたい
の場合で説明します。
Aの遷移もとがZだとしてリダイレクトページをYをつくるとして一番美しいと思える方法は、下記方法です。
z.asp→引数e(仮に引数名は「seni」)を渡す→y.asp→サーバー側でリダイレクト→e.asp
この場合のy.aspのソースは下記のようになります
y.asp
------------------
<%
select case Request("seni")
case "e"
Server.Redirect("e.asp")
.....略
end select
%>
この方法をとった場合にはサーバーの環境引数を使用しないで遷移できるのでファイル名に「あまり」依存しないコードを記述することが可能です。あとは質問者様があげられた4パターンの全てをこのソースコードに埋め込むことができますので、ファイルの遷移先をきめる関数ページのような使用方法ができますので便利です。
で、実は上記方法までは質問者様は理解していてこの質問をされているという前提で次にいきましょう
次の方法は、質問者様がそのまま考えている方法で遷移します。
z.asp→a.asp→y.asp→サーバー側でリダイレクト→e.asp
ただしこの場合の条件として二通りの方法が考えられます
case1.前画面により条件が分岐
case2.当画面がa.aspである場合には無作為にy.aspに遷移
ただ、この場合にはcase2の方法はありえないかな・・・と考えています。無条件に遷移するのであればa.aspの存在が必要ないからです(実は必要あるようなケースも想定していますのでもうすこしお待ち下さいw)
一応両方のcaseの例を示します。
case1
a.asp
-----------------------
<%
'Request.ServerVariables("HTTP_REFERER")←これで前画面のURL文字列を取得します。
If InStr(Request.ServerVariables("HTTP_REFERER"),"z.asp") <> 0 Then'たしかファイル名以外にも引数等がはいるのでInStrで評価する(本来はUCASEで大文字にして比較する必要あり。)
Response.Redirect("e.asp")
End If
%>
case2
Request.ServerVariables("HTTP_REFERER")をRequest.ServerVariables("LOCAL_ADDR")に変更してa.aspが含まれている場合でチェック(たしかその画面の情報を取得する場合には「LOCAL_ADDR」だったとおもいます・・・)
以上です。
また画面がテーブル構造(フレームではないですよね?)でどこにいれたらいいかわからないとのことですのでこの場合には一番a.aspの先頭に組み込みます。Redirectはhtmlの出力を一度でも行ってしまうとサーバー上でそのまま遷移ができなくなってしまうからです(当然といえば当然ですね(笑))
では最後にJSでの実装方法といきましょう。
この方法は前述した通りそのまま素通りして遷移するのであればUI上あってはいけない方法ですが、たとえばa.aspで画面を表示したのちにクライアント側がボタンを押下した。などというアクションにより遷移する場合には必要となります。
この場合にはボタンを押下したものとしてサンプルを記述します。(コンテンツ部分にはJSを含めてはいけないとのことですのでに分割します。)
a.asp(コンテンツ)(手をつけてはいけないとのことですがなんらかのJSを呼び出しているという想定で記述します。その想定JS関数名をseniとしてここでは記述します。)
-----------------------
~~~~なんらかの文字列
<input type="button" onclick="javascript:seni();">
~~~~なんらかの文字列
x.asp(ヘッダ)(クライアントのJSでa.asp表示時のみ以下を出力しておきます。)
-----------------------
<script>
strRedirectPage = "e.asp";
</script>
x.asp(ヘッダ、もしくはフッタ。seni()に相当する関数がおいてある場所。)(クライアントのJSで以下を出力しておきます。)
-----------------------
<script>
seni(){
if(strRedirectPage=="e.asp"){
Location.href="e.asp";
}
~~~元々あった処理~~~
}
</script>
上記方法によりコンテンツ部分にはJSを使用している前提ですがJSによる実装は可能です。
逆に言うとa.asp上でそのまま<a href="?.asp">などと記述されている場合にはコンテンツに手を入れなければ実装は不可能です。
と、ながくなりましたがこんな感じですかね。
まとめると、サーバーによるRedirectが可能であれば全ての画面遷移を1ASPにまとめないとメンテナンスが大変ですので遷移用ASPを常に通った後に画面遷移を通るべきだと思います。
現実的にはいまさら手を加えられないといった問題などもあるので常にヘッダーの中にincludeする方法をとると良いでしょう。これであれば一行の追加ですみますので。
以上、いずれか適した方法で実装してみてください。
最後になりましたがここまで全てノリで一気に書いたソースですので記述ミスはご容赦くださいw
それではご検討を祈ります。でわ。
No.1
- 回答日時:
ええっとですね・・・お答えする前にまず確認から。
まずテンプレートが同じという点についての質問です。
テンプレートが同じというのは、元になっているファイルが同じだけであってその中で表示されている文字は別物ですよね?(例がhhtmlファイル名が異なることから想定)別物である場合であればその中に別々に単純にjavascriptを埋め扱くことで実行は可能です。
ただ、少し気になっているのはおっしゃっているテンプレートが、例えばblogなどであるテンプレートを指す場合であるのであればこれを実行するのは不可能です。なぜなら通常のblogなどではjavascriptなどは記述できないと思われるからです。
要するにそれぞれのページが複数のhtmlファイルであり、JSを実行できる環境であれば可能であり(※多少JSを勉強すればまるっきり同じJSでを複数HTMLに埋め込んだ場合でも分岐すればいいだけなので可能ですが例が複数ファイルですので割愛します。)、blogやwikiのようにデータを入力すればWEB画面が表示されるようなものについては不可能と言うことです。(ご自身でblogのシステム自体を構築できるようであれば別ですが・・・)
以上です。
ケースによって具体的な回答が変わってきますのでまず環境のご報告をお願いいたします。
この回答への補足
分りづらい質問内容で申し訳ございません。。
もう少し詳細な状況をご報告申し上げます。
テンプレートを使っているのはASPのショッピングサービスです。
ページはテーブルでヘッダー・コンテンツ・フッターに分けられており、
ヘッダー・フッターのみHTMLによるカスタマイズが可能で、全ページに適用されます。
コンテンツ部分は登録した商品情報が反映され、それ以外のカスタマイズは不可能です。
ですので、仰るとおり、分岐すれば出来るような気はするのですが。。
ご回答の程、何卒よろしくお願いいたします!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Outlook(アウトルック) outlookでのメール自動リダイレクトができません 2 2022/05/09 20:44
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Oracle TOPページ以外の、301リダイレクトの記述設定について 1 2022/08/12 17:14
- サーバー 301リダイレクトができる条件を知りたいです 2 2022/10/25 11:21
- サーバー 新サイトへのミグレーション 1 2022/09/11 10:25
- その他(プログラミング・Web制作) 301リダイレクトについて 1 2022/09/30 19:41
- その他(プログラミング・Web制作) 恒久的リダイレクトについて 2 2023/07/13 15:58
- その他(ブログ) Brogger独自ドメインから独自ドメインへ変更する 1 2022/09/22 13:21
- その他(プログラミング・Web制作) PHPの$_SERVER["REQUEST_URL"]の0文字目は必ず"/"になることになってるの? 1 2023/07/07 17:42
- その他(スマホアプリ・スマホゲーム) リダイレクトの繰り返しエラーってどうやったら直りますか? ネットで調べていろいろしたけどなおらないで 1 2022/06/03 19:31
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IT分野において、興味のある技...
-
WSL2でDockerを構築してMySQLを...
-
WSL2でDockerを構築してSpring ...
-
32歳IT未経験だが応用情報技術...
-
SESでハズレ現場を引いた場合 S...
-
なぜ誰でもできるプログラマー...
-
SEとWebエンジニアの業務内容の...
-
大地抵抗率測定について
-
大卒で47歳までシステムエンジ...
-
未経験からエンジニアになるた...
-
システムエンジニアとして期待...
-
システム開発やDX推進を前職で...
-
機械系とITエンジニア
-
プログラマーです 未経験から一...
-
スマートグラスAR機能とスカウ...
-
ITに関して無知で少し気になる...
-
データサイエンティストとwebエ...
-
動画クリエイターからシステム...
-
映像製作エンジニアからシステ...
-
ヨーロッパ社会は、なんでGAFA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ASPで画面間のパラメタ受け渡し
-
エクセルVBA 別のブックのユ...
-
HTTPリクエストヘッダーの設定...
-
オートマトンNFAからDFAへの変換
-
画面遷移が不正ですと表示されます
-
【ASP.NET】ページ遷移してもGr...
-
VB.NET 画面遷移
-
スマホで、左右にスワイプして...
-
ASP.NET による画面遷移で質問...
-
Request Header の追加
-
server.transferで別のサイトへ
-
Spreadのデータを別画面に引き渡す
-
VB.netによるWeb系ソフト...
-
Cookie認証 方法
-
JK-FFを用いた順序回路の作成方法
-
request.QueryStringについて
-
セッション変数への値の代入方...
-
aspからasp.netへの遷移(その...
-
違うサイトに移動した時にcooki...
-
unityでクイズゲームを作ってい...
おすすめ情報