【问题标题】:Is a redirect a type of rewrite rule?重定向是一种重写规则吗?
【发布时间】:2021-04-08 01:28:30
【问题描述】:

我试图了解重写和重定向之间的区别,但我有点困惑。我在某些地方读到不同之处在于“重定向规则指示客户端(通常是浏览器)切换 URL 并导航到规则的目标。重定向规则通常用于您想要重定向的旧路径给新的。

相比之下,重写规则不会更改原始 URL;它只是在原始路径上提供规则目标的内容。浏览器无法判断内容是从不同的路径或 URL 提供的,因此可以在您网站的任何其他路径上显示来自不同路径或 URL 的内容。 "

但是查看 Apache 服务器,文档是这样说的: “mod_rewrite 模块使用基于规则的重写引擎,基于 PCRE 正则表达式解析器,动态重写请求的 URL。默认情况下,mod_rewrite 将 URL 映射到文件系统路径。但是,它也可以用于重定向一个 URL 到另一个 URL,或调用内部代理获取。”

那么在这种情况下可以重写功能作为重定向,这样 URL 在浏览器中会出现变化吗?还是总是这样,如果它是重写,浏览器 url 永远不会改变?如果您使用 IIS 与 Apache 服务器,答案是否不同?

【问题讨论】:

  • 您编写的规则通常被称为“重写规则”,但规则是否会导致重定向(对浏览器的 30 倍 HTTP 响应)或简单的重写(服务器端内部 URL 更改和进一步处理) 取决于你到底写了什么。请做一些实验来弄湿你的手,因为仅仅靠文字并不能帮助你理解太多。

标签: apache tomcat iis proxy reverse-proxy


【解决方案1】:

URL 重写规则用于创建用户友好的 URL,这些 URL 更容易让用户记住,也更容易被搜索引擎找到。

IIS 的重写模块可用于执行 2 个操作:

rewrite => URL 保持不变,但内容是从其他地方加载的

<action type="Rewrite" url="http://www.{HTTP_HOST}/{R:0}" />

redirects => 当用户的浏览器被带到一个新的 URL 时。

<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" />

两者都使用相同的规则和条件来确定是否应该触发操作。

同样适用于 apache,但在 apache 系统中会有所不同,重定向它使用“redirect|R”标志。

参考链接: https://weblogs.asp.net/owscott/rewrite-vs-redirect-what-s-the-difference

【讨论】:

    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 2020-11-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多