我們正在將PHP站點從Apache移植到NGINX,並在嘗試讓NGINX識別從站點URL傳遞到index.php的參數時遇到了一個問題。.htaccess URL參數重寫爲NGINX
我們在Apache的.htaccess命令如下
RewriteEngine on
RewriteBase/
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)[/]?$ /index.php?market=$1&area=$2&id=$3 [L]
該規則允許的index.php明白$市場來自於第一URL參數,$區來源於第二和$ ID來自第三。
所以,www.domain.com/miami/profiles/100提供的index.php以$市場=邁阿密,$面積=曲線並且$ id = 100
我們已經想盡了各種失敗的解決方案希望能在網站的NGINX conf文件中達到同樣的效果。這裏有一些我們已經試過了不起作用:
location /sitename {
root /www/sitename;
try_files $uri /sitename/index.php?market=$args&area=$args&id=$args;
}
location /sitename {
root /www/sitename;
try_files $uri /sitename/index.php/?market=$args?area=$args?id=$args;
}
location /sitename {
rewrite "^/index.php/([a-zA-Z]+)/([a-zA-Z]+)/([a-zA-Z]{3})$"
/index.php?market=$1&area=$2&id=$3 last;
}
任何人能發現我們在做什麼錯在這裏向我們展示的解決方案?
感謝您指出了這一點。我把你修改後的重寫,仍然沒有得到我期待的行爲。 – user2062272 2013-02-15 18:58:30
我寫了一個獲取URL變量到index.php的新方法。因此,現在我定義從server_URI創建的數組中的$ market,$ area和$ id變量。這裏是代碼: – user2062272 2013-02-15 19:00:57
$ url_parts = explode('/',$ _ SERVER ['REQUEST_URI']);如果 (isset($ url_parts [ '1'])){ \t \t $市場= $ url_parts [ '1']; } 如果(isset($ url_parts [ '2'])){ \t \t $面積= $ url_parts [ '2']; } 如果(isset($ url_parts [ '3'])){ \t $ ID = $ url_parts [ '3']; \t } – user2062272 2013-02-15 19:01:46