Nginx 仅提供静态文件服务,但有些文件名包含“?”。是的,问号。
所有包含“?”的 URL 都会导致 404 错误,即使文件确实存在。例如
> GET /foo?lang=ar.html HTTP/1.1
...
...
< HTTP/1.1 404 Not Found
当名为foo?lang=ar.html确实存在于预期位置。
我想知道是否有办法告诉 Nginx 将整个请求视为 URL,包括当前翻译为查询字符串的内容。
我想到唯一的解决方案是编写一个执行此操作的小型 Web 服务器,并让 nginx 反向代理该 Web 服务器,但我更喜欢单独使用 nginx 来完成它。
答案1
您可以使用try_files使用$request_uri
或$uri$is_args$args
取决于您在寻找文件名时是否要解码 urlencoded 位。