2013-10-30 53 views
0

是否可以由最終用戶檢測到mod_rewrite規則?
根據瀏覽器類型重定向用戶而不發送代理或重定向響應的最佳方式是什麼?是基於用戶代理可檢測的mod_rewrite嗎?

我試圖確保一個瀏覽器類型的用戶獲取正確的登錄頁面,而另一個瀏覽器類型的用戶獲取他們的一個。但是,它不需要檢測。

所有網站用戶都會看到「www.mysite.org/index.html」,但「index.html」將基於用戶代理字符串的不同頁面,但我不希望有任何指示器,如重定向狀態( 3xx)只有好的200.

會加入[PT]這樣做還是加入[R]併發送200?作爲一個規則,我不希望發送200,以防出現問題,但我不希望用戶看到本地重定向的任何指示。我認爲服務器端的設置是隱藏的,但有人表示它可以被響應代碼檢測到。

Examples I found; 

    # MS Internet Explorer - Mozilla v4 
    RewriteEngine On 
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/4(.*)MSIE 
    RewriteRule ^index\.html$ /index.IE.html [L] 

    # Netscape v6.+ - Mozilla v5 
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/5(.*)Gecko 
    RewriteRule ^index\.html$ /index.NS5.html [L] 

    # Lynx or Mozilla v1/2 
    RewriteCond %{HTTP_USER_AGENT} ^Lynx/ [OR] 
    RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12] 
    RewriteRule ^index\.html$ /index.20.html [L] 

回答

0

這是這種工作方式的通用流程:

  1. 瀏覽器向服務器發送
  2. 服務器接收請求的請求(在這一點上,瀏覽器將等待響應)
  3. 請求經過多個模塊,mod_rewrite的是一個的mod_rewrite規則被觸發他們
  4. 之一,URI是重新編寫到另一個URI,這個URI最終得到服務並且它的內容被返回給瀏覽器。

至於瀏覽器而言,這是所有它認爲:

  1. 我有一個URL
  2. 我發送一個請求,
  3. 我得到了我發送的URL內容

在第一個工作流程中,步驟2,3和4全部發生在服務器端,因此瀏覽器不知道任何事情。

所以你不需要一個PTR(它告訴瀏覽器去其他地方,因此暴露在內容真正的地方)。