Nginx 重寫規則等效於 Apache 版本
我正在使用 PHPThumb 腳本在我的部落格 www.muylinux.com 上的一個小滑塊/輪播中調整圖像大小。我已經完成了從 Cherokee(我們的網路伺服器有問題)到 Nginx 的遷移,但是儘管幾乎一切都執行良好,但輪播並未顯示 PHPThumb 生成的縮略圖,儘管圖像實際上位於它連結到的目錄中.
例如,這是目前應該顯示的圖像之一:
www.muylinux.com/wp-content/themes/massivenews/scripts/phpThumb/phpThumb.php?src=/wp-content/uploads/2010/11/Unix.jpg&w=186&h=156&zc=T&q=95
如您所見,圖像在那裡:
www.muylinux.com/wp-content/uploads/2010/11/Unix.jpg
但不知何故,它沒有顯示在首頁的輪播中。
我很確定這是一些重寫規則的問題,但我不知道如何解決這個問題。
我已經看到 Apache 中的 RewriteRule 應該是
RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]
我不確定“翻譯”到 nginx 規則是否可行,但我想這很有可能會奏效。
有人可以嘗試給我等效的 Nginx 重寫規則嗎?我試過這個:
rewrite ^/([^?]*)(?:\?(.*))? index.php?thumb=$1$2;
我是這方面的初學者,但沒有奏效。
最終不需要為了解決問題而包含新的重寫規則。
找不到路徑和圖像,因為外掛目錄沒有執行權限。
因此,如果有人處理此問題,只需訪問您的 WordPress 安裝,
cd blog_path/wp-content/themes/theme_name
就我而言,在該文件夾中,我有一個包含 phpThumb 腳本的“*腳本”子文件夾。*所以從那條路上,
chmod 755 -R scripts/
而且…問題解決了。
如果我理解正確,這有點奇怪,通常您不會將對 PHP 文件的請求重寫為 index.php。
轉換
RewriteRule ^(.*)$ index.php?thumb=$1 [L,QSA]
為 Nginx 配置語法的最佳方法是使用try_files $uri $uri/ /index.php?thumb=$request_uri;
考慮到請求是針對 PHP 腳本的,您可能需要在您的 PHP 位置使用它。如果您發布了配置文件,可能會更容易說。