2010-04-12 59 views
1

我試圖用nginx的一個簡單的內部重寫導航到視USER_AGENT子目錄 - 移動瀏覽器訪問/移動,否則他們去/ WWWnginx - 如何獲得重寫指令在索引指令之前執行?

但是看來,當我重寫這些在重寫之前處理索引指令,所以我最終得到403禁止。

# TEST FOR INDEX 
index index.php 

# TEST PHONES 
if ($http_user_agent ~* '(iPhone|iPod)') { 
    rewrite ^(.*)$ /mobile$1 break; 
} 

# OTHERWISE WE ARE DONE 
rewrite ^(.*)$ /www$1 break; 

當我關閉重新寫入和命中的主機名(http://www.somehost.com/)正確顯示的索引。當他們打開時,我必須明確地導航到somehost.com/index.php才能使腳本運行...

是否必須對目錄進行明確測試,然後重新寫入index.php文件,還是有更簡單的解決方案?

回答

1

這與兩個人通話的問題。糟糕!應該知道。

第一個請求進來/然後重新寫入/ www /。

該指數然後應用,所以它後來成爲/www/index.php,但PHP處理程序再次調用重寫規則,所以最終的URL成爲:/www/www/index.php

2

嘗試:

server { 
    index index.php; 
    location/{ 
    if ($http_user_agent ~* '(iPhone|iPod)') { 
     rewrite ^(.*)$ /mobile$1 last; 
    } 
    rewrite ^(.*)$ /www$1 last; 
    } 
}