2013-10-20 36 views
3

我試圖讓Nginx的重寫URL空間./data/(.+).png到serveImage.php存在嗎?GUID = $ 1重定向URL到PHP只有當文件不與Nginx的

server { 
    server_name my.server; 
    listen 80; 
    listen 127.0.0.1:80; 
    root /var/www/my.server; 
    index index.html; 

    location/{ 
     try_files $uri $uri/ index.html; 
     rewrite ^/data/(.+).png serveImage.php?guid=$1 last; 
    } 

    location ~ \.php$ { 
     fastcgi_pass 127.0.0.1:9000; 
     fastcgi_index index.php; 
     include fastcgi_params; 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     fastcgi_param HTTPS off; 
    } 
} 

我究竟做錯了什麼? serveImage.php確實存在於文檔根目錄中。

回答

16

重寫似乎沒有按計劃運行(access.log或error.log中似乎沒有任何提示甚至提示該規則甚至被捕獲)。我製作了一個更通用的路由器,可能更適合其他未知的需求。

location/{ 
    try_files $uri $uri/ @router; 
    index index.html index.php; 
    error_page 403 = @router; 
    error_page 404 = @router; 
} 

location @router { 
    rewrite ^(.*)$ /router.php?$1; 
} 
+0

感謝您爲我一直試圖解決的問題提供這樣一個簡單的解決方案。在這裏,拿10個代表。 – Blizz

+0

謝謝@Blizz。 :) – adrenalin

3

那麼,如果它總是/data我會爲它創建一個特定的位置,這樣

location ~ /data/(.+).png { 
    try_files $uri /serveImage.php?guid=$1; 
} 

試試這個,告訴我,如果它的工作原理。

+0

奇怪的是什麼都沒有。這看起來是正確的,聞起來是正確的,但沒有解決這個問題,這可能是由於IP衝突(機器上有兩個IP,其他IP有限制通配符)或其他問題。 – adrenalin

+0

太使這項工作,你必須在位置後寫下〜符號。使用正則表達式時需要。 – michaelbn

+0

是啊你是對的,這很奇怪我錯過了,謝謝糾正 –