0

Webサーバーがブラウザで2回目の要求を発行する必要のないリダイレクトを発行する方法はありますか?ブラウザに別のリクエストを発行せずに新しいURLにリダイレクトしますか?

たとえば、ブラウザはhttp://www.mysite.com/lionを要求しましたが、サーバーはブラウザの位置をhttp://www.mysite.com/jungleに変更したいとします。私がこれを達成する方法を知っている唯一の方法は、サーバがjungleというURLを持つ3xxステータスコードを送信し、ブラウザがそれを取得するための新しい要求を発行することです。

lionリクエストに対してサーバーがjungleのページを配信することは可能ですか?ブラウザに「URLをhttp://www.mysite.com/jungleに設定する」と伝えますか?

答えて

2

はい、URL書き換えと呼ばれます。 ApacheとIISの両方にこれを可能にするモジュールがあります。ライオンが要求されたときに

RewriteEngine On 
RewriteRule lion jungle [L] 

ジャングルの内容はリダイレクトせずに、送信されます:仮想ホスト内の.htaccessファイルやあなたのhttpd.confのApacheの

、。

+0

しかし、ブラウザはアドレスバーのURLを変更しますか? –

+0

いいえ。URLは、ブラウザが別のURIを要求している場合にのみ変化しますが、これは起こっていません。リダイレクトもリダイレクトもできません。 URLを変更する(クライアントがブラウザか検索クローラのいずれであっても、URIが別の場所にあることを知りたい場合など)、リダイレクトヘッダーと適切なステータスコードを送信する必要があります。リダイレクトを行うと、ブラウザが2回目のリクエストを行う前にヘッダを送信しているだけで、速くて帯域幅を無駄にしないことに注意してください。 –

1

ASP.NETでは、Server.Transfer()を使用できます。これにより、現在の要求に対して異なるページが返されます。

ブラウザーにはこれが起こっているという知識はありません。 http://www.mysite.com/jungleの内容が表示されても、アドレスバーにはまだhttp://www.mysite.com/lionと表示されます。

ブラウザに別のページがロードされていることを知らせたい場合は、私が関心している限りリダイレクトが必要です。

関連する問題