ラベル IIS の投稿を表示しています。 すべての投稿を表示
ラベル IIS の投稿を表示しています。 すべての投稿を表示

2015年12月25日金曜日

404.1、404.2という状態コードとは?

こんにちは山田です。

 Webサイトの運用や開発者なら誰でも、
「404 - ファイルが見つかりません」や
「401 - 権限がありません」
などのエラー メッセージを見たことがあると思います。

この時、特定のHTTP状態コードが出たときに、
自分で作成したエラー画面を指定してあげることが出来ます。

■ざっと404エラーの時の指定方法です。

①IISを立ち上げて、エラーページをクリック








 ②目的の状態コードを選択して「編集」




③「このサイトでURLを実行」に表示させたいURLを記述する


以上

■404.1、404.2という状態コードとは?

さて、本題。
状態コードの編集画面に「404または404.2」と記載されているのが気になりました。
404エラーは、NotFoundのエラーだけど、(.少数点)とは、、?

少し調べてみると公式ページに答えが乗っていました。
 ↓↓
IIS 7.0、IIS 7.5、および IIS 8.0 の HTTP 状態コード
https://support.microsoft.com/ja-jp/kb/943891

どうやら、IIS 7.0から、404 エラーなど状態コードだけでなく、
より詳細な原因を特定できるようになったようです。
 例)
  • 404.0 - ファイルまたはディレクトリが見つかりません。
  • 404.1 - サイトが見つかりません。
 よって同じ404エラーでも、小数点から下を指定してあげれば、
もっと詳細に目的別に出しわけができるんですね。

2015年11月27日金曜日

ASP.NETでのURLリライトの流れ


こんにちは山田です。
長年の疑問のURLリライトについてわかってきたので
その覚書です。 

開発環境:ASP.NET2.0
開発言語:C#
IIS:6.1

■URLリライトの別名
URLリライト=URL書き換え
日本語だとURL書き換えとなります。

■そもそもURLリライトは必要なの?
個人的な疑問としてページリライトの技術はURLから判断して、
IISのサーバーのファイルディレクトリ(どの階層にいるのか)がわかりにくくなるし、
今見ているページの関連する記事を探したい場合、URLの法則性がわからないのでなんと打ち込めばよいのかわからない等の感想を持っていました。(こんな使われ方は想定されていいないと思いますが、、、)

一般的にどういう目的で使われているかと
  • URLが短い。
  • URL入力が簡単になる。
  • URL を見ると、サイトの構造がわかる。
  • "短縮可能 (hackable)" である。つまり、ユーザーが URL の一部分を入力すれば、そのサイトを表示して目的のページに移動できる。
というメリットがあるので、やはり必要な技術のようです。
特にURLが短い場合、気軽にそのwebページにアクセスしやすくなりますね。

ASP.NET での URL 書き換え

↑ここをざっと読んでみたのですが。
Umm...よくわからない。

■自分なりに実装したページリライトの流れをまとめてみました。

・実態のURL:/contentDetail.aspx
・必要な引数: userID=yamada&contentID=101
・リライト後のURL: http://blog.jp/yamada0101/

URLで
http://blog.jp/yamada0101/ → とアクセスさせたかった場合
   ↓
web.configにリライトルールを記述する(事前に)
   ↓
IISがリライトルールにそって、そのURLから実態のURLに直す
(/yamada0101/→/contentDetail.aspx?userID=yamada&contentID=101)
    ↓
IISが実態のファイルのページを判定する
(/contentDetail.aspx)
   ↓
クエリスストリングの必要なIDをRequestで取得する
   ↓
取得したuserIDとcontentIDから目的のブログ記事を
DBから取り出してページをレンダリングする
   ↓
  終わり

この流れがわからなくて、もやもやしていました。
他の言語や、開発環境だとまた違うのかな?
またふと疑問に思ってしまいました。

2015年11月20日金曜日

URL最後のスラッシュとは

URL最後のスラッシュがない

こんにちは山田です。
雑誌とかテレビを見ているときに気になってURLをアクセスしてみると
あれ、NotFound… ないじゃんということが、、、あるかもしれませんね。

さて、
お客さんに印刷して渡したURLに最後スラッシュがついていなかったということになっておりました。
実際にURLを開いてみると NotFound…
その時の対応の話です。

正:http://sample.com/contents/0001
誤:http://sample.com/contents/0001/

一般的な人からするとなくてもあっても一緒なんじゃないかと思われがちな箇所だと思います。
(僕もチラシ屋さんだったらあまり気にしなそう)

豆知識として
そもそもURLの最後のスラッシュには「トレイニングスラッシュ」という名前があるようです。

というわけで、
誤っているURLを正しいURLへ301リダイレクトさせてみました。

開発環境:ASP.NET2.0
IIS:ver8.5

web.config
<system.webServer>
 ~
 <rewrite>
   <rule name="URLの最後にスラッシュをつけてる" stopProcessing="true">
     <match url="^contents/([0-9]{7})$" />
     <action type="Redirect" url="/contents/{R:1}/" redirectType="Permanent" appendQueryString="true"  />
   </rule>
 </rewrite>
</system.webServer>

属性
stopProcessing:このルールを適用した場合、そこでルールの処理を終了するかどうかを指定する
        trueであれば、これ以降のルールは適用しない
        falseであれば、さらに別のルールで指定した別のURLへリダイレクトされる
       (属性を省略したらfalseになります)
redirectType:このリダイレクトがどういった意味かをレスポンスコードで返すことが出来ます
       (省略):301  永続的
       Permanent:301 永続的
       Found:302    検出
       SeeOther:303   その他
       Temporary:307  一時的
appendQueryString:置換時に、現在の URL のクエリ文字列を保持するかどうかを指定する
               trueであれば、クエリ文字列を保持する(つまり、元の URL のクエリ文字列が置換された URL に追加されます)
          falseであれば、クエリ文字列を保持しない         
          属性を省略したら既定で TRUE と見なされます。

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月6日金曜日

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 所要時間