Centos

一種為漂亮的 URL 建構 nginx 重寫規則的最佳方法

  • February 3, 2018

網頁通過以下方式訪問:

example.com/?site=website 

在此範例中,我正在訪問位於example.com domain.

任何人都可以提出一種重寫規則的最佳方式,所以上面的內容會被顯示和訪問example.com/website嗎?

nginx, Centos 7

您可以使用以下內容,請記住IfIsEvil

location = / {
 if ($arg_site) {
   return 302 /$arg_site;
 }
}

有關的:

這個想法是您創建一個重定向循環,但不是真的,因為外部重定向與內部重定向之間存在差異,因此,循環不是封閉的循環,因為一個重定向明確地只是外部的,而另一個重定向是明確地只內部的:

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;
}

引用自:https://unix.stackexchange.com/questions/383478