Существует ли такая вещь, как перезапись URL-адреса HTTP без перенаправления 301 или 302? - PullRequest
1 голос
/ 06 августа 2011

Есть ли такая вещь?

Как это можно использовать:

Во многих местах есть формы, которые отправляют на http://www.example.com/wally/app/receiver.aspx

Руководства решают, что им нужен более чистый URL, и нет никаких оснований делать вид, что вы используете aspx (вы действительно не думали, что я использую aspx для этого?)

Говорят, это должно быть http://example.com/receiver

Достаточно просто! Просто поставьте 301 редирект. Не нужно обновлять все те формы, которые существуют повсюду .., но подождите .. Вы не можете сделать это для POST.

Возможно, вы можете получить и обработать запрос, а затем переписать URL, не вызывая последующий запрос? Возможно, это не лишит www (междоменный домен), но может ли он сократить путь таким образом без отдельного запроса?

Даже в запросах GET это действительно увеличило бы производительность, если бы можно было переписать URL-адрес и одновременно отправить тело ответа. Можно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2011

Ну, я думаю, переписывание URL, предложенное LazyOne, не является ответом на вопрос, так как он сам утверждает, что

Это будет делать внутреннее перенаправление, когда URL остается неизменным в браузере. адресная строка

(http://www.example.com/wally/app/receiver.aspx). Тем не менее, вопрос задает

(...) должно быть http://example.com/receiver

Я думаю, что решение состоит в том, чтобы перенаправить старый URL-адрес на новый, используя код состояния 307 , введенный в RFC 2616. Пользовательские агенты, которые обрабатывают версию 1.1 протокола HTTP (я думаю, что все популярные браузеры уже некоторое время ) должен сделать новый запрос, используя тот же метод http (в данном случае POST), что и в исходном запросе.

0 голосов
/ 06 августа 2011
  1. Вы не можете отправлять контент пользователю и одновременно выполнять перенаправление 301/302 и т. Д. - браузер интерпретирует код HTTP-ответа и действует в соответствии с полученным кодом.Если 301/302 - он выполнит перенаправление, если 200 - отобразит его для клиента.

  2. Существует ли такая вещь, как перезапись HTTP-URL без 301или 302 редирект?

    Да - это называется перезапись (внутреннее перенаправление).Например - запросы клиентов http://example.com/receiver.Вы переписываете URL так, чтобы он указывал на /wally/app/receiver.aspx (например, RewriteRule ^receiver$ /wally/app/receiver.aspx [L] - это если у вас есть Apache, которого, скорее всего, нет (учитывая receiver.aspx)).Это будет делать внутреннее перенаправление, когда URL остается неизменным в адресной строке браузера (работает нормально с методами POST и GET).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...