有这样的事吗?
可能会使用它的方式:
许多地点都有张贴到http://www.example.com/wally/app/receiver.aspx
管理层决定他们想要一个更干净的URL并且没有理由假装你正在使用aspx(你真的不认为我使用的是aspx吗?)
他们说它应该是http://example.com/receiver
够简单!只需输入301重定向即可。无需更新所有存在的表格..但是等等..你不能为POST做到这一点。
也许您可以接收并处理请求,然后重新编写URL而不会导致后续请求?也许这不会剥离www(跨域),但是如果没有单独的请求它可以缩短路径名吗?
即使在GET请求中,如果可以重新编写URL并同时发送响应主体,这确实会提升性能。可以这样做吗?
答案 0 :(得分:0)
您无法向用户发送内容并同时执行301/302等重定向 - 浏览器会解释HTTP响应代码并根据收到的代码采取相应措施。如果是301/302 - 它会进行重定向,如果是200 - 将显示给客户。
在没有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)发出新请求。