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 と見なされます。
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿