Centos
一種為漂亮的 URL 建構 nginx 重寫規則的最佳方法
網頁通過以下方式訪問:
example.com/?site=website
在此範例中,我正在訪問位於
example.com domain
.任何人都可以提出一種重寫規則的最佳方式,所以上面的內容會被顯示和訪問
example.com/website
嗎?nginx, Centos 7
您可以使用以下內容,請記住
IfIsEvil
location = / { if ($arg_site) { return 302 /$arg_site; } }
有關的:
- https://stackoverflow.com/questions/45257380/nginx-rewrite-query-string-args-to-html-url-w-o-backend-support/45293264#45293264
- https://serverfault.com/questions/866201/an-optimal-way-of-nginx-rewrite-rule-building-for-pretty-url/866950#866950
- https://github.com/cnst/StackOverflow.cnst.nginx.conf/blob/master/so.45257380.rewrite-query-string-args-to-html-url-w-o-backend.nginx.conf
這個想法是您創建一個重定向循環,但不是真的,因為外部重定向與內部重定向之間存在差異,因此,循環不是封閉的循環,因為一個重定向明確地只是外部的,而另一個重定向是明確地只內部的:
location = / { if ($arg_site) { return 302 /$arg_site; } return 200 "<!DOCTYPE html><title>site</title> <form><input name='site' value='website'/></form>\n"; } location / { rewrite ^/([^/]*)\$ /?site=$1 break; proxy_pass http://javabackend:8080; }