2015-12-30 47 views
0

我的問題是在nginx配置上重寫URL。如何在nginx上重寫?

我有網址:http://domain.com/folder1/folder2/folder3/filename.jpg 文檔根:/home/myuser/web filename.jpg存儲在/home/myuser/uploads/folder3/filename.jpg

現在我需要檢查文件是否存在/home/myuser/web/uploads/folder3/filename.jpg然後重寫這個文件 或不存在,然後重寫URL的index.php ?r = folder1/folder2/folder3/filename.jpg

注意:只使用我的網址,我不想重定向url 請幫助我。 謝謝先進的

+0

如果閱讀文檔可以爲所有工作,不需要Stackoverflow。請按照關於 –

回答

1

這不完全是你要求的。如果文件不存在,則將URI內部重寫爲/index.php?r=/folder1/folder2/folder3/filename.jpg(帶領/)。

location /folder1/folder2/folder3/ { 
    alias /home/myuser/web/uploads/folder3/; 
    try_files $uri /index.php?r=$request_uri; 
} 

編輯:在的folder1文件夾2folder3是一個正則表達式的佔位符的情況。很明顯,文件夾3必須是文檔根目錄中的物理目錄。下面的正則表達式位置將匹配多種模式,應放置在server塊的底部附近,以避免干擾更具體的正則表達式位置塊。詳情請見this document

location ~ ^/[^/]+/[^/]+(/.+)$ { 
    root /home/myuser/web/uploads; 
    try_files $1 /index.php?r=$uri; 
} 
+0

folder1 2 3動態的示例進行操作。無法設置多個位置 –

+0

@ĐộcHành更新了答案。 –