0

Есть ли способ для веб-сервера выдавать переадресацию, которая не требует, чтобы браузер выдавал второй запрос?Перенаправить на новый URL-адрес без браузера, выдающего второй запрос?

Например, браузер запросил http://www.mysite.com/lion, но для его использования потребуется браузер для изменения местоположения на http://www.mysite.com/jungle. Единственный способ, которым я знаю, как это сделать, - это передать серверу код состояния 3xx с URL-адресом jungle, и браузер выдает новый запрос на его получение.

Возможно ли, чтобы сервер поставил страницу jungle в ответ на запрос lion, и просто скажите браузеру "Задайте свой адрес http://www.mysite.com/jungle"?

ответ

2

Да, это называется переписыванием URL. Оба Apache и IIS имеют модули, которые позволяют это.

Для Apache, в файле .htaccess или httpd.conf вашего внутри виртуального хоста:

RewriteEngine On 
RewriteRule lion jungle [L] 

Содержимое джунглей будет отправлено, когда лев запрашивается без редиректа.

+0

Но приведет ли браузер к изменению URL-адреса в адресной строке? –

+0

№ URL-адрес изменяется только в том случае, если браузер запрашивает другой URI, чего не происходит. Вы не можете перенаправлять и не перенаправлять. Если вы хотите, чтобы URL-адрес изменился (т. Е. Вы хотите, чтобы клиент, будь то браузер или искатель поиска, знал, что URI находится в другом месте), вы должны отправить заголовок перенаправления и соответствующий код состояния, это правильная вещь. Имейте в виду, что когда вы делаете перенаправление, вы отправляете только заголовки, прежде чем браузер сделает второй запрос, он будет быстро и не будет тратить полосы пропускания. –

1

В ASP.NET вы можете использовать Server.Transfer(). Это приводит к возврату другой страницы для текущего запроса.

Обратите внимание, что браузер не знает, что это происходит. Он все равно будет показывать http://www.mysite.com/lion в адресной строке, даже если вы увидите контент от http://www.mysite.com/jungle.

Если вы хотите сообщить браузеру, что загружается другая страница, вам необходимо перенаправить, насколько мне известно.