我想使用 URL 路径作为 URL 参数,这就是我想要实现的
每当用户输入example.com/abc
时,请求都应自动重定向到,而example.com/?abc
无需修改用户端的 URL。目前,nginx 将其视为/abc
路径并抛出 404。
此外,现有文件不应被重定向,例如example.com/demo.php
应按原样提供。
答案1
您需要使用重写引擎...例如这样(在服务器配置中):
经过一些研究,这对我有用 -
location / {
...
if (-f $request_filename) {
break;
}
rewrite ^/([^?].*) /?$1 permanent;
}
旧答案 -
server {
...
if (!-f $request_filename){
rewrite ^/(.*) /?$1;
}
...
}
答案2
请尝试以下操作:
server {
root /example/path;
server_name example.com;
try_files $uri $uri/ /index.php?$uri;
}
这将使 nginx 首先检查是否存在与请求 URI 部分匹配的文件或目录,然后 nginx 为其提供服务。
如果不匹配,则将请求传递给/index.php
URI 部分作为查询参数。