Nginx提供了强大的重定向和URL重写功能,主要通过rewrite
指令和return
指令实现。下面我将详细介绍这些功能的用法。
server {
listen 80;
server_name example.com;
location /old-url {
return 302 http://example.com/new-url;
}
}
server {
listen 80;
server_name example.com;
location /old-page {
return 301 http://example.com/new-page;
}
}
server {
listen 80;
server_name old-domain.com;
return 301 http://new-domain.com$request_uri;
}
server {
listen 80;
server_name example.com;
location /products {
rewrite ^/products/(.*)$ /items/$1 last;
}
}
server {
listen 80;
server_name example.com;
if ($http_user_agent ~* "MSIE") {
rewrite ^(.*)$ /ie-version/$1 break;
}
}
last
- 停止处理当前重写规则,继续匹配其他locationbreak
- 停止处理所有重写规则redirect
- 返回302临时重定向permanent
- 返回301永久重定向server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
server {
listen 80;
server_name example.com;
# 确保目录URL以/结尾
rewrite ^([^.]*[^/])$ $1/ permanent;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location / {
rewrite ^/blog/(\d+)/(.*)$ /blog.php?id=$1&title=$2 last;
}
rewrite_log on;
error_log /var/log/nginx/error.log notice;
curl -v
测试重定向:curl -v http://example.com/old-url
try_files
代替复杂的重写规则,如果可能希望这些信息对您有所帮助!如需更具体的配置示例或有其他问题,请随时提问。