为什么我的RewriteRule需要[R]?

时间:2011-08-17 16:22:44

标签: wordpress mod-rewrite

据我所知,[R]标志强制重定向到浏览器。我理解的方式是它将“重绘”浏览器地址栏中的URL。

所以

RewriteRule test en/students/ [R]

会将此地址http://mydomain.com/test更改为:http://mydomain.com/en/students

但是如果我在上面的例子中遗漏了[R],它应该还是带我到/ en / students页面,如果不是的话?我的理解是它仍应该转到该页面,但地址栏根本不会更新。

如果我错了,请解除我的想法。否则,我需要帮助理解为什么它不适合我的情况?是因为之后WordPress需要的RewriteRules吗? WordPress总是通过分析用于调用其引擎的ACTUAL URI来解决问题,还是可以访问这个RewriteEngine产品的“隐藏”URI?

2 个答案:

答案 0 :(得分:0)

[R]使重写成为重定向。因此浏览器将发送到新的URL。正常重写由服务器处理,用户无法看到实际目标是什么。

答案 1 :(得分:0)

如果没有[R],请求就是这样的:

  1. 浏览器请求http://mydomain.com/test
  2. 重写规则在内部更改为http://mydomain.com/en/students
  3. Apache向浏览器返回http://mydomain.com/en/students的内容。浏览器不知道URI是在内部更改的。
  4. 使用[R],请求如下:

    1. 浏览器请求http://mydomain.com/test
    2. 重写规则向浏览器发送响应,告知其加载http://mydomain.com/en/students
    3. 浏览器请求http://mydomain.com/en/students(也可能会更改状态栏)。
    4. 如果没有任何其他重写规则,Apache会向浏览器返回http://mydomain.com/en/students
    5. 的内容

      我只能猜测在前一种情况下,Wordpress正在访问请求的URI而不是重写的URI。