Nginx
Nginx 不將重寫傳遞給 PHP-FPM
我對 nginx 有以下重寫規則。
規則似乎無法正常執行,例如,當我導航到 /game/2/ 時,遊戲規則應該重寫
http://thegamesdb.net/game/2/
為http://thegamesdb.net/index.php?tab=game?id=2
懸停,瀏覽器正在下載一個名為 simple 的文件download
。我的重寫規則如下:
# nginx configuration location /game { rewrite ^/game/([0-9]+)(/?)$ /index.php?tab=game&id=$1 break; rewrite ^/game-edit/([0-9]+)(/?)$ /index.php?tab=game-edit&id=$1 break; } location /search { rewrite ^/search/([a-z0-9\-\ /\+]+)(/?)$ index.php?tab=listseries&string=$1&function=Search break; rewrite ^/search(/?)$ /index.php?tab=listseries&function=Search break; } location /browse { rewrite ^/browse/([0-9+]*)(/?)$ /index.php?tab=listplatform&stringPlatform=$1&function=Browse+By+Platform break; } location /platform { rewrite ^/platform/([0-9]+)(/?)$ /index.php?tab=platform&id=$1 break; rewrite ^/platform/([a-z0-9\-]+)(/?)$ /index.php?tab=platform&alias=$1 break; rewrite ^/platform-edit/([0-9]+)(/?)$ /index.php?tab=platform-edit&id=$1 break; } location /favorites { rewrite ^/favorites(/?)$ /index.php?tab=favorites break; } location /message { rewrite ^/message/([0-9]+)(/?)$ /index.php?tab=message&messageid=$1 break; } location /adminstats { rewrite ^/adminstats/([a-z0-9\-]+)(/?)$ /index.php?tab=adminstats&statstype=$1 break; } location /blog { rewrite ^/blog(/?)$ /blog/ break; } location /wiki { rewrite ^/wiki(/?)$ /wiki/ break; } location /forums { rewrite ^/forums(/?)$ /forums/ break; } location /phpmyadmin { rewrite ^/phpmyadmin(/?)$ /phpmyadmin/ break; } location / { rewrite ^/([a-z0-9\-\ /\+]+)(/?)$ index.php?tab=$1 break; if (!-e $request_filename){ rewrite ^(.*)$ /index.php break; } }
我看不出規則有什麼問題,我錯過了什麼嗎?
順便說一句,我正在使用 Ajenti-V,上面的規則已輸入到 Ajenti-V 網站的自定義配置面板中。
更新:
似乎我目前的重寫規則需要路由到,
php-fpm
因為它們目前被視為靜態文件。我將如何調整上面的程式碼來實現這一點?
您沒有位置塊將 php 文件的請求轉發到處理後端。
為 php 文件添加一個 location 塊並在其中使用 nginx fastcgi_module,然後將重寫轉換為 php 文件
break
到last
.你可以找到很多關於伺服器故障的例子:搜尋。
更新:按照評論中的要求修復根位置塊。
您的正則表達式已經匹配
/
,因此/?
永遠不會匹配任何內容,例如 for/stats/
。您必須設置兩個重寫規則:location / { rewrite "^/(.*)/$" /$1; rewrite "^/([- +a-z0-9/]+)$" /index.php?tab=$1 last; [ ... ] }