您尚未指定哪个部分不起作用。但是,无论如何,它看起来都是一个不完整的解决方案,因为您缺少一个完整的循环循环。
看一下nginx 重定向循环,从 url和https://serverfault.com/a/568902/110020中删除 index.php — 这个想法是创建一个重定向循环,但由于外部和内部重定向的差异而中断它.
试试这个,完整的配置在https://gist.github.com/cnst/3521404dfdf5cb7b4c526b5c6dff38ff:
location = /search/ {
if ($arg_search) {
return 302 /search/$arg_search.html;
}
return 200
"<!DOCTYPE html><title>search</title>
<form><input name='search'/></form>\n";
}
location /search/ {
rewrite ^/search/([^/]*)\.html$ /search/?search=$1 break;
proxy_pass http://localhost:7381;
}
上面的代码会自动重定向/search/?search=nginx
到/search/nginx.html
外部,这样浏览器中的位置会改变,但是会在后端处理请求,就好像从来没有发生过这样的重定向一样。