我們公司網站有用 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 大大該如何處理 ^_^
你第一個設定就沒有問題,
要看看是否上傳圖檔的路徑對不對,
就先把rewrite拿掉,
就應可確認從網站看到圖的狀況。
我模擬了你的狀況,
nginx的設定檔如下:
<pre class="c" name="code">server {<br></br>
server_name cook.com.tw;<br></br>
access_log /home/SITES/Cook/logs/access.log;<br></br>
error_log /home/SITES/Cook/logs/error.log;<br></br>
root /home/SITES/Cook/htdocs;<br></br><br></br>
location / {<br></br>
index index.html index.htm index.php;<br></br>
rewrite "^/([0-9]{1,5})$" /view.php?id=$1;<br></br>
}<br></br><br></br>
location ~* /(images|cache|media|logs|tmp)/.*\.(php|pl|py|jsp|asp|sh|cgi)$ {<br></br>
return 403;<br></br>
error_page 403 /403_error.html;<br></br>
}<br></br><br></br>
location ~ \.php$ {<br></br>
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;<br></br>
fastcgi_index index.php;<br></br>
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;<br></br>
include /etc/nginx/fastcgi_params;<br></br>
}
view.php檔內容如下:
<pre class="c" name="code"><?php echo $_GET["id"]; ?><br></br>
<br /><br></br>
<img src="/ckeditor/images/<?php echo $_GET["id"]; ?>.png">
可順利畫出
<pre class="c" name="code">1234<br /><br></br>
<img src="/ckeditor/images/1234.png">
顯示圖檔也正常,log檔也ok
<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"<br></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"