我正在嘗試將查詢字串附加?sort_by=id&dir=ASC&lim=2&flt=1到任何前往的流量/admin/users.php,這將導致:
/admin/users.php?sort_by=id&dir=ASC&lim=2&flt=1
我試圖關注這個問題/答案:
https://serverfault.com/questions/311487/nginx-rewrite-append-a-parameter-at-the-end-of-an-url
通過執行以下操作:
location /admin/users.php {
rewrite ^(.*) $1?sort_by=id&dir=ASC&lim=2&flt=1 break;
}
也試過:
location /admin/users.php {
rewrite ^ /admin/users.php?sort_by=id&dir=ASC&lim=2&flt=1 last;
}
/admin/users.php但是沒有添加查詢字串的任何流量都會回傳。我顯然做錯了什么。
有什么正確實施的建議嗎?
整個default.conf:
server {
listen 4000;
root /usr/share/nginx/html/src;
include /etc/nginx/default.d/*.conf;
index app.php index.php index.html index.htm;
client_max_body_size 500m;
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(. ?\.php)(/.*)$;
rewrite ^/admin/?(.*) /$1 break;
rewrite ^/admin/users.php$ /admin/users.php?sort_by=id&dir=ASC&lim=2&flt=1 break;
fastcgi_param HTTP_PROXY "";
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
uj5u.com熱心網友回復:
由于您正在嘗試重寫 PHP 檔案的 URI,因此您的 PHP 處理程式很可能看起來有點像
location ~ \.php$ {
...
}
~修飾符指定一個正則運算式匹配位置,并且該型別的位置比前綴位置具有更高的優先級(只有與修飾符完全匹配的位置比=正則運算式具有更高的優先級)。此外,您不應該嘗試使用額外的位置塊來執行此操作 - 您可以使用該方法實作的所有功能都是無限回圈。試試這個:
location ~ \.php$ {
rewrite ^/admin/users.php$ /admin/users.php?sort_by=id&dir=ASC&lim=2&flt=1 break;
include fastcgi_params;
...
}
更新
您的 PHP 處理程式位置中有兩個rewrite指令。第一個/admin將從任何以該前綴開頭的 URI 中截斷前綴。第二個將向/admin/users.phpURI 添加額外的查詢引數,但它已經被重寫為/users.php. 此外,這兩個rewrite指令都有一個break標志,這意味著如果第一個規則將被執行,第二個規則將永遠不會到達。要結合這兩個規則,請嘗試以下保留rewrite指令順序:
rewrite ^/admin/users.php$ /users.php?sort_by=id&dir=ASC&lim=2&flt=1 break;
rewrite ^/admin/?(.*) /$1 break;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/435552.html
上一篇:發布成功但回應是前端錯誤
