iT邦幫忙

0

請教Nginx的rewrite設定

afgn 2012-10-24 11:56:268437 瀏覽

我們公司網站有用 rewrite, 但最近發現一個問題:
原本 http://abc.tw/1234 會轉到 http://abc.tw/view.php?id=1234
但是如果用 CKEditor 上傳 1234.jpg 就會發現找不到 >"<
查了半天發現它自己轉到 http://abc.tw/1234 :(
就算直接在網址列上打圖片路徑也沒用
(例 http://abc.tw/ckeditor/images/1234.jpg )

原設定方法如下:
rewrite "^/([0-9]{1,5})$" /view.php?id=$1;

我後來有加一段
if (!-f $request_filename)
{
rewrite "^/([0-9]{1,5})$" /view.php?id=$1;
}

一樣不行!! 請教一下 wiseguy 大大該如何處理 ^_^

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
逮丸逮丸
iT邦大師 1 級 ‧ 2012-10-24 13:54:18
最佳解答

你第一個設定就沒有問題,
要看看是否上傳圖檔的路徑對不對,
就先把rewrite拿掉,
就應可確認從網站看到圖的狀況。
我模擬了你的狀況,
nginx的設定檔如下:

&lt;pre class="c" name="code">server {&lt;br>&lt;/br>
    server_name cook.com.tw;&lt;br>&lt;/br>
    access_log /home/SITES/Cook/logs/access.log;&lt;br>&lt;/br>
    error_log /home/SITES/Cook/logs/error.log;&lt;br>&lt;/br>
    root /home/SITES/Cook/htdocs;&lt;br>&lt;/br>&lt;br>&lt;/br>
    location / {&lt;br>&lt;/br>
      index index.html index.htm index.php;&lt;br>&lt;/br>
      rewrite "^/([0-9]{1,5})$" /view.php?id=$1;&lt;br>&lt;/br>
    }&lt;br>&lt;/br>&lt;br>&lt;/br>
    location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {&lt;br>&lt;/br>
        return 403;&lt;br>&lt;/br>
        error_page 403 /403_error.html;&lt;br>&lt;/br>
    }&lt;br>&lt;/br>&lt;br>&lt;/br>
    location ~ \.php$ {&lt;br>&lt;/br>
        fastcgi_pass  unix:/var/run/php-fpm/php-fpm.sock;&lt;br>&lt;/br>
        fastcgi_index index.php;&lt;br>&lt;/br>
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br>&lt;/br>
        include /etc/nginx/fastcgi_params;&lt;br>&lt;/br>
    }

view.php檔內容如下:

&lt;pre class="c" name="code">&lt;?php echo $_GET["id"]; ?>&lt;br>&lt;/br>
&lt;br />&lt;br>&lt;/br>
&lt;img src="/ckeditor/images/&lt;?php echo $_GET["id"]; ?>.png">

可順利畫出

&lt;pre class="c" name="code">1234&lt;br />&lt;br>&lt;/br>
&lt;img src="/ckeditor/images/1234.png">

顯示圖檔也正常,log檔也ok

&lt;pre class="c" name="code">x.x.x.x - - [24/Oct/2012:13:51:08 +0800] "GET /1234 HTTP/1.1" 200 60 "-" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"&lt;br>&lt;/br>
x.x.x.x - - [24/Oct/2012:13:51:08 +0800] "GET /ckeditor/images/1234.png HTTP/1.1" 200 19549 "http://cook.com.tw/1234" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"
afgn iT邦新手 5 級 ‧ 2012-10-24 16:35:05 檢舉

感謝您細心的回答, 我找到問題出在哪了, 我並沒有加上 location / { rewrite...; } 才導致一直都不正常, 謝謝 ^_^

我要發表回答

立即登入回答