ウェブサーバーはどのようにURL書き換えメカニズムを実装し、ブラウザのアドレスバーを変更しますか?
私は、apache、nginx、lighthttpdなどの設定に特定の情報を求めていません!
サーバがURLを書き換えたいときに、どのような情報がクライアントに送信されるのか知りたいですか?URL書き換えはどのように機能しますか?
答えて
あなたは(ApacheのMOD-書き換えのように)、サーバー側の書き換えについて話していますか?そのため、アドレスバーは一般に変更されません(リダイレクトが実行されない限り)。 またはリダイレクトについて話していますか?これらは、サーバーにHTTPコード(301,302または307)とHTTPヘッダー内の場所で応答させることによって行われます。
私はサーバー側のルールについて話していました。ありがとう! – cirne100
ジェフアトウッドは、このことについての素晴らしい記事を持っていた:http://www.codinghorror.com/blog/2007/02/url-rewriting-to-prevent-duplicate-urls.html
ウェブサーバがURL書き換えメカニズムを実装し、ブラウザのアドレスバーを変更する方法は?
URLの書き換えと転送は、2つの完全に異なるものです。 サーバーはブラウザを制御できないため、ブラウザのURLを変更することはできませんが、ブラウザに別のURLに移動するよう依頼することができます。あなたのブラウザがサーバから応答を受け取ったとき、ブラウザはその応答に何をするかを決めることができます。それはリダイレクトに従うか、無視するか、サーバが諦めるまでサーバを迷惑にします。サーバーがアドレスを変更するために使用する「メカニズム」はありません。特定のリソースが別の場所に移動されたときにサーバーが従うプロトコル(HTTP 1.1)、つまり3xx応答です。
URLの書き換えは、サーバー側で純粋にURLを変換することができます。これにより、Webアプリケーション開発者は複数のURLからWebリソースにアクセスできるようになります。
たとえば、ユーザはhttp://www.example.com/product/123
を要求することがありますが、書き換えのおかげで実際にはhttp://www.example.com/product?id=123
のリソースが提供されます。ブラウザに表示されるアドレスを変更する必要はありません。所望であれば
アドレスを変更することができます。このために、上記と同様のマッピングがサーバー上で行われますが、リソースをクライアントに戻すのではなく、サーバーは書き換えられたURLのリダイレクト(301または302 HTTPコード)をクライアントに返します。以下のように見えるかもしれません。この上記の例
:
クライアント要求
GET /product/123 HTTP/1.1
Host: www.example.com
この時点で、サーバーの応答
HTTP/1.1 302 Found
Location: http://www.example.com/product?id=123
、ブラウザがURLのための新しいGET
要求を発行します。 Location
ヘッダーにあります。サーバ内で純粋に行われたものとリダイレクトされているもの:
は、「URLリライト」の2つの形式があります。それはサーバ内で純粋になら
、それは内部の問題だと唯一のサーバーに実装さディスパッチメカニズムに関して重要。 Apache HTTPDでは、例えばmod_rewriteがこれを行うことができます。
リダイレクトの場合、リダイレクトを意味するステータスコードが、ブラウザでリダイレクトされるURL(絶対URL)を示すLocation
ヘッダーとともにレスポンスに送信されます。 mod_rewrite
もこれを行うことができ、[R]フラグが付いています。 ステータスコードは通常302 (found)ですが、他のコード(たとえば301または307)に設定することもできます。
もう1つの非常に一般的な使用方法(通常はApache HTTPDでデフォルトでオンになっているので気づかないことが多い)は、ディレクトリの末尾にスラッシュを付けたURLへのリダイレクトです。これはmod_dirによって実装されます。
Aサーバは の要求を受信したときにリダイレクトが に発行された「最後のスラッシュ」URLのdirnameがディレクトリである
http://servername/foo/dirname
。 ディレクトリの末尾にスラッシュ( )が必要です。したがって、mod_dirはhttp://servername/foo/dirname/
にリダイレクトします。
動作には2種類あります。
1つは書き換えられ、もう1つはリダイレクトされます。
書き換え
サーバがhttp://example.org/my/beatuful/page
のようなURLをリライトしてhttp://example.org/index.php?page=my-beautiful-page
として理解することが作る、自分自身のための置換を行い、クライアントには何も表示されません。また、リダイレクトは内部です。ブラウザーにURLは変更されず、サーバーだけが別の方法でそれを理解します。
リダイレクト
サーバーは、サーバーによってアドレスが望ましくないことを検出します。 http://example.org/page1
はhttp://example.org/page2
に移動したので、HTTP 3xxコードでブラウザに新しいページの内容を伝えます。クライアントは代わりにこのページを要求します。したがって、ブラウザのアドレスが変わります!
プロセス
プロセスは同じままであり、同様にこの図によって説明される:
備考すべてリライト/リダイレクト例外IIRCと書き換え規則に新しいコールを(トリガ)
は、ループを停止するのに役立ちます。 (それは一度起こったときに書き換えをしないので)。
- 1. Wordpressは書き換えマップなしでURLをどのように書き換えますか?ワードプレスサイトの
- 2. CodeIgniter URL書き換えが機能しません
- 3. .htaccess URL書き換えが機能しません
- 4. IIS URL書き換えは、私はURLを書き換えしようとしているルートURL
- 5. URLはサブドメインのように書き換えます
- 6. URLの簡単な書き換えが機能しない
- 7. URL書き換えが正しく機能しない
- 8. .htaccessファイルやrobots.txtの書き換えURLどのように
- 9. ノード/角張ったURL書き換えが機能しない
- 10. WordPressはどのようにURLのリダイレクト/書き換えですか?
- 11. IIS7でURLを書き換えよう
- 12. symfonyのURLペースはどのように機能しますか?
- 13. スタックオーバーフローのURLはどのように機能しますか?
- 14. symfonyのアセットURLはどのように機能しますか?
- 15. CodeIgniterのURLはどのように機能しますか?
- 16. ChromeのURLはどのように機能しますか?
- 17. テキストURLパラメータはどのように機能しますか?
- 18. URL短絡サイトはどのように機能しますか?
- 19. eddystone-urlはどのように機能しますか?
- 20. URLエンコードはどのように機能しますか?
- 21. URL Shortenerはどのように機能しますか?
- 22. 私は書き換えにはどうすればよいのURL
- 23. htaccessは既に書き換えられたURLに書き換えます
- 24. htaccess URLを書き換えて#書き換えます!
- 25. htaccess URL書き換えのためDropzone.jsが機能しません
- 26. .htaccess URLを書き換えますか?
- 27. この単語置換機能はどのように機能しますか?
- 28. 豚の置換機能はどのように機能しますか?
- 29. Javaスクリプトの書き換え機能
- 30. 書き換えURL
RFC 2616のセクション10.3を参照してください。http://www.ietf.org/rfc/rfc2616.txt –