2011-08-17 48 views
0

我知道[R]標誌強制重定向到瀏覽器。我明白的是,它會在瀏覽器的地址欄中「重新繪製」網址。爲什麼在我的RewriteRule中需要[R]?

所以

RewriteRule test en/students/ [R]

將改變這一地址:http://mydomain.com/test這樣:http://mydomain.com/en/students

但是,如果我在上面的例子中離開了[R],應該還是帶我去/ en /學生頁面,如果不是?我的理解是,它仍然應該去那個頁面,但地址欄根本不會更新。

如果我錯了,請解除我的概念。否則,我需要幫助理解爲什麼它不適用於我的情況?是否因爲WordPress之後需要RewriteRules?是否通過總是分析用於調用其引擎的ACTUAL URI來解決這個問題,或者它是否可以訪問這個RewriteEngine產品的「隱藏」URI?

回答

0

沒有[R],要求是這樣的:

  1. 瀏覽器請求http://mydomain.com/test
  2. 重寫規則將內部更改爲http://mydomain.com/en/students
  3. Apache向瀏覽器返回http://mydomain.com/en/students的內容。瀏覽器不知道URI在內部發生了變化。

隨着[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的內容。

我只能猜測,在前者的情況下,WordPress是訪問請求的URI,而不是重寫的URI。

+0

感謝您的詳細解答! WordPress抓取URL並對其進行分析以找出要提供的頁面。我猜如果你不做重定向,WordPress會得到舊的URL,而不知道如何處理它。那麼[P]標誌怎麼樣 - 在這種情況下會有幫助嗎? –

+0

@TomAuger:也許吧。試試看看。 – Anomie

0

[R]使重寫變爲重定向。所以瀏覽器發送到新的網址。正常的重寫是由服務器處理的,用戶不會看到實際的目標是什麼。

相關問題