nginx 301 不保留问号后面的
时间: 2023-12-26 14:17:33 浏览: 21
要在nginx的301重定向中不保留问号后面的内容,可以使用下面的配置:
```
location /old-url {
if ($request_uri ~ ^([^?]*)\?(.*)$) {
return 301 $1;
}
}
```
这个配置使用了一个正则表达式,将请求URI中问号后面的内容分离出来,并将重定向目标设置为不带问号的部分。注意,这个配置只对/old-url路径的请求生效。如果需要对所有请求都生效,可以将这个配置添加到server块中。
相关问题
nginx rewrite 301 不保留问号后面的
要在nginx的rewrite 301重定向中不保留问号后面的内容,可以使用下面的配置:
```
if ($request_uri ~ ^([^?]*)\?(.*)$) {
return 301 $1;
}
```
这个配置使用了一个正则表达式,将请求URI中问号后面的内容分离出来,并将重定向目标设置为不带问号的部分。注意,这个配置只对当前server块中的请求生效。如果需要对所有server块中的请求都生效,可以将这个配置添加到http块中。但是需要注意,if语句在nginx中的性能较差,应该尽量避免使用。
nginx重定向 要求保留后面的路由和参数
可以使用以下的方法在 nginx 中进行重定向并保留后面的路由和参数:
```
server {
listen 80;
server_name example.com;
# 重定向
if ($request_uri ~* "^/old-url(.*)$") {
return 301 $scheme://$server_name/new-url$1;
}
# 其他配置
...
}
```
在上面的配置中,我们使用 `if` 指令来匹配原始请求的 URI 是否以 `/old-url` 开头。如果匹配成功,我们使用 `return` 指令来进行重定向,并在新的 URL 中保留原始请求的 URI 和参数。
需要注意的是,在 nginx 中使用 `if` 指令进行条件判断时,要避免使用复杂的正则表达式,以避免性能和安全问题。如果需要更复杂的条件判断,可以考虑使用 nginx 的 `map` 指令或者使用 Lua 脚本来实现。