2012-03-08 33 views
0

我有以下URL格式:與Nginx的管理/阿帕奇/ WordPress的如何重寫URL

www.example.com/members/admin/projects/?projectid=41 

而且我想他們改寫以下格式:

www.example.com/avits/projectname/ 

項目名稱當用戶創建它們時,不必是唯一的,因此如果同名的項目已經存在,我將檢查現有名稱並在項目名稱末尾附加一個整數。例如example.project,example.project1,example.project2等

我很高興設置GET請求通過項目名稱查詢數據庫,但我有設置這些漂亮的url的巨大問題。

我正在使用Apache與Nginx管理員安裝哪些男士的所有靜態內容通過Nginx服務沒有Apache的開銷。

我完全不知道我應該在我的nginx.conf文件中使用nginx重寫規則還是在我的.htaccess文件中使用標準重寫。

若要進一步混淆事項,雖然這是一個相當大的自定義應用程序,它建立在wordpress骨幹之上,以便於博客功能,這意味着我也有內置的wordpress重寫模塊供我使用。

我已經嘗試過所有三種方法,絕對沒有成功。我已經閱讀了很多關於此事的文章,但似乎無法得到任何工作。我確信這純粹是由於完全缺乏對URL重寫的理解。再加上我不知道哪種類型的重寫應該適用於我的案例,這意味着我無非是圍着圈子走。

任何人都可以爲我解決這個問題,並解釋如何以上述方式重寫我的網址?

非常感謝。

回答

0

如果您將所有非靜態文件請求代理到Apache,請在那裏進行重寫 - 您不需要對nginx執行任何操作,因爲它只會將請求傳遞給後端。

你提出的問題是,它實際上不是重寫,重寫是採取第一個URL,只是改變它或將用戶移動到另一個位置。

你需要的東西實際上需要邏輯來推斷項目ID中的項目名稱。

例如你可以重寫:

www.example.com/members/admin/projects/?projectid=41 

要:

www.example.com/avits/41/ 

很容易,但是你可以映射/ 41 /在你的應用程序代碼,將其更改爲/項目名稱/ - 因爲一個URL重寫不能做到這一點。

+0

非常感謝Gareth,你描述的邏輯實際上是在適當的位置,而不是問題。這是純粹的重寫本身,我正在努力。 – gordyr 2012-03-13 19:20:52

+0

所以,你想做的確切重寫?嘗試這樣的: 所以你想在我的例子中進行上面的確切重寫?做這樣的事情: 'rewrite ^/members/admin/projects /?projectid = $/avits/$ 1?/ last;' – 2012-03-14 09:04:50