是否有HTTP URL重写没有301或302重定向?

时间:2011-08-06 01:03:35

标签: http url-rewriting

有这样的事吗?

可能会使用它的方式:

许多地点都有张贴到http://www.example.com/wally/app/receiver.aspx

的表单

管理层决定他们想要一个更干净的URL并且没有理由假装你正在使用aspx(你真的不认为我使用的是aspx吗?)

他们说它应该是http://example.com/receiver

够简单!只需输入301重定向即可。无需更新所有存在的表格..但是等等..你不能为POST做到这一点。

也许您可以接收并处理请求,然后重新编写URL而不会导致后续请求?也许这不会剥离www(跨域),但是如果没有单独的请求它可以缩短路径名吗?

即使在GET请求中,如果可以重新编写URL并同时发送响应主体,这确实会提升性能。可以这样做吗?

2 个答案:

答案 0 :(得分:0)

  1. 您无法向用户发送内容并同时执行301/302等重定向 - 浏览器会解释HTTP响应代码并根据收到的代码采取相应措施。如果是301/302 - 它会进行重定向,如果是200 - 将显示给客户。

  2.   

    在没有301或302重定向的情况下,是否重新写入HTTP URL?

    是的 - 它被称为重写(内部重定向)。例如 - 客户请求http://example.com/receiver。您重写URL以指向/wally/app/receiver.aspx(例如RewriteRule ^receiver$ /wally/app/receiver.aspx [L] - 如果您有Apache,那么您很可能不会(考虑receiver.aspx))。当浏览器地址栏中的URL保持不变时,这将执行内部重定向(适用于POST和GET方法)。

答案 1 :(得分:0)

嗯,我想重写LazyOne建议的网址不是问题的答案,因为他自己说明了

  

当URL在浏览器中保持不变时,这将执行内部重定向   地址栏

(http://www.example.com/wally/app/receiver.aspx)。不过,问题还是要求

  

(...)它应该是http://example.com/receiver

我认为解决方案是使用RFC 2616中的307状态代码introduced将旧网址重定向到新网址。处理1.1版HTTP协议的用户代理(我猜一段时间内所有流行的浏览器){ {3}}使用与原始请求中相同的http方法(在本例中为POST)发出新请求。