2015年11月10日火曜日

ページのリダイレクト方法 web.config

ページのリダイレクト方法

こんにちは山田です。
リダイレクトについてまとめました。(action type="Rewrite"でリライトも設定できます。)

開発環境:ASP.NET
使用言語:C#

リダイレクトの書き方ですが
いくつか方法があるようなのですが、
今回はWeb.configに記述する方法を使います。

まず、nameにリライトルールの名前を記述します。
次に、このルールにマッチする正規表現を設定します。
最後に、URLがマッチしたときに発生するアクションを設定します。

 この“^campaign/index([0-9]{6}).aspx$”では、
もし入力URLが“^campaign/index([0-9]{6}).aspx$”の場合、{R:0}は“campaign/index201511.aspx”となり、{R:1}は“201511”になります。
ユーザーをリダイレクトするURLになるよう、この{R:1}/の値を使用します。
({R:N}のNとは後方参照のインデックスになります)

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewriteルール名" stopProcessing="true">
          <match url="^campaign/index([0-9]{6}).aspx$" />
          <action type="Redirect" url="{R:1}/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

2015年11月9日月曜日

GoogleMapを埋め込むには?

こんにちわ、開発者のⅠです。
最近、某サイトのマーケットプレイスで、クレジット以外の支払いOK&コンビニ受け取りも選べる場合があることに最近気付きました。便利になったものですね……。

閑話休題。

本日の投稿は、グーグルマップについてです。
グーグルマップといえばGoogle社が提供している地図サービスを指し、皆さんもご存じだと思います。経路検索はもちろん、地形や交通状況まで確認出来てしまう便利なツールですね。
https://www.google.co.jp/maps/

このグーグルマップ、グーグルとは関係無さそうなお店などのサイトに埋め込まれているのを見たことはないでしょうか?そうです、グーグルマップをHTMLサイト内に文字通り”埋め込む”ことが可能です。

埋め込むためには、上に載せたリンクよりグーグルマップのサイトへアクセスし、左上のメニューを開き、”地図を共有または埋め込む”⇒”地図を埋め込む”から、一行のコードを取得しましょう。

あとは、地図を埋め込みたい箇所にコードを追加するだけです。

それでは、今日はこの辺りで失礼します。

HttpResponse.Redirect メソッド (String)とは

こんにちは山田です。
エアコンと床暖のランニングコストはどっちがお得なんだろうと
最近気になっています。

季節ネタはさておき今回は、使用していたリダイレクトメソッドを
調べてみたのでその備忘録になります。

開発環境:ASP.NET 2.0

■HttpResponse.Redirect メソッド (String)とは

ASP.NETで画面遷移行う時Response.Redirect(string)を使います。
具体的には、クライアントに現在の処理を終了させて指定したURL(stringのこと)に遷移させることができます。

try-catch文を記すと常に例外が起こる仕様になっているようで
その時は第二引数にfalseを指定させて、Response.Endを呼ばせなくすることができるそうです。

調べたら似たようなメソッドで HttpServerUtility.Transferメソッドというものがありました。

■HttpServerUtility.Transferメソッドとの違い
このメソッドも指定したページへと処理を移すという点ではRedirectメソッドと同じなのですが、
動作の中身が大きく違うようです。

大きく違う点は
Redirectメソッドの場合は、ユーザーからの見た目上では、ポストバックが一度だけのように見えるが
 実はリクエストとレスポンスがそれぞれが2回ずつ起きているのです。
 一度目のレスポンスで、ポストした情報が消えてしまうので、ポストバックをさせたい場合はこの方法を使うことができません。
一方、Transferメソッドの場合は、ページが書き換わったあとページ遷移はサーバ内部で行われるため。
 遷移前にページで生成したオブジェクトが、メモリ上に残っているので遷移先のページからアクセスすることができます。

ページをまたいでポストバックできるってことですね。便利そうです。








2015年11月6日金曜日

301リダイレクトの書き方

こんばんはSです!

リダイレクトには恒久的な転送の301リダイレクトと一時的な302リダイレクトがありますが、
(おそらく)皆さんがよく使うと思われるResponse.Redirectは302リダイレクトです。

しかし、今回は301リダイレクトを行いたかったので
そのような書き方を探しました。

下記の2つが該当のコードです。

▼Framework 4.0以上のコード
Response.RedirectPermanent(url.Replace("元のURL", "リダイレクト後のURL"));


▼Framework 2.0にも対応
Response.StatusCode = 301;
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", url.Replace("元のURL", "リダイレクト後のURL"));
Response.End();


 

IISのログの見方

こんにちはグリーンスムージ≠青汁ということを知った山田です。
本日は
IISのアクセスログの見方を知ったのでまとめました。
どういう時に必要なログかはまだわかっていないのですが、
その入り口として 各属性の内容を調べてみました。

■アクセスログの場所

初期設定では
C:\inetpub\logs\Logfiles
フォルダ名
・Webサイトの場合::”W3SVC” + サイトID(数字)
 ※サイトIDはIISマネージャで確認できます

■アクセスログの各項目
date time サーバでリクエストを受信した日時(UTC形式:日本+9時間)
s-ip    サーバーのIPアドレス
cs-method  使われたHTTPメソッド
cs-uri-stem アクセスしてきたドメイン以下のアドレス
cs-uri-query ターゲットのクエリ情報
c-ip     クライアントのIPアドレス
cs(User-Agent) ユーザーエージェント
cs(Cookie)  クッキー 
cs(Referer) 参照元
cs-host  ホスト
sc-status プロトコルの状態
time-taken 所要時間