Nginx
將 htaccess url 重寫規則轉換為 nginx
我如何在這裡轉換我的 htaccess 規則
RewriteRule ^/?([^/]+)/([^/]+)/?$ page-1.php?a=$1&b=$2 [L,QSA] RewriteRule ^/?([^/]+)/([^/]+)/([^/]+)/?$ page-2.php?a=$1&b=$2&c=$3 [L,QSA]
進入nginx規則?我試過使用轉換器,但我得到了以下
winginx location / { rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break; } anilcetin rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 last; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 last;
但是它們都沒有真正起作用,這裡有什麼問題?
在我的程式碼中,這裡有一個頁面
domain.com?page-1.php?a=a&b=b
會變成domain.com/a/b
domain.com?page-2.php?a=a&b=b&c=c
進入domain.com/a/b/c
問題
您的評論說您對正則表達式和重寫語句感到滿意,並且只需要 Nginx 和位置塊周圍部分的幫助。
快速瀏覽它們並不能讓我確信你的重寫是正確的。我希望有更多類似的東西 - 注意這肯定是不正確的,絕對不是最佳的,甚至可能無法通過“nginx -t”檢查。
rewrite ^/([0-9a-zA-Z_\-\s\+]+)?a=([0-9a-zA-Z_\-\s\+]+)&b=([0-9a-zA-Z_\-\s\+]+)*c=([0-9a-zA-Z_\-\s\+]+) /$2/$3/$4;
這裡的總體構想是為您關心的 URL 的每個部分創建一個擷取組,並在前面加上一個未使用的擷取組。第一個只是因為我不擅長正則表達式,而且從我自己的一個可能有效的配置中複製和粘貼一些東西更容易。
Nginx 位置和正則表達式
Nginx 重寫可以在伺服器或位置上下文中,並按照配置文件中的順序工作。對你來說,我可能會把它們放在站點配置文件的頂部附近,在位置塊上方
server { server_name example.com; listen 80; rewrite ^/?([^/]+)/([^/]+)/?$ /page-1.php?a=$1&b=$2 break; rewrite ^/?([^/]+)/([^/]+)/([^/]+)/?$ /page-2.php?a=$1&b=$2&c=$3 break; location / { # Whatever you want in here to handle the rewritten or normally requested URLs # root /var/www/html; # proxy_pass 1.2.3.4; } location /a { # If you want to handle specific URLs you can do it in another location block } }
對您的問題的總體評論是它不是很精確,並且不能證明您已經為自己解決問題做出了任何努力。