利用Nginx实现URL重写(URL Rewriting)可以通过配置nginx.conf文件或特定站点的配置文件来完成。URL重写通常用于将用户友好的URL转换为服务器可以理解的路径,或者将旧的URL重定向到新的URL。以下是一些常见的URL重写示例和配置方法:
假设你想将所有对/oldpage的请求重写到/newpage:
server {
listen 80;
server_name example.com;
location /oldpage {
rewrite ^/oldpage$ /newpage permanent;
}
}
在这个例子中,rewrite指令将/oldpage重写为/newpage,并且使用permanent标志表示这是一个永久重定向(HTTP状态码301)。
你可以使用正则表达式来匹配更复杂的URL模式并进行重写。例如,将所有以/category/开头的URL重写到/index.php?category=$1:
server {
listen 80;
server_name example.com;
location / {
rewrite ^/category/([^/]+)$ /index.php?category=$1 last;
}
}
在这个例子中,([^/]+)是一个捕获组,匹配/category/后面的任何字符,并将其捕获为$1变量。
如果你想将某些URL重定向到另一个域名,可以使用return指令:
server {
listen 80;
server_name example.com;
location /oldpage {
return 301 http://newdomain.com/newpage;
}
}
你可以使用if指令来添加条件判断:
server {
listen 80;
server_name example.com;
location / {
if ($http_user_agent ~* "MSIE") {
rewrite ^(.*)$ http://example.com/ie/$1 last;
}
}
}
在这个例子中,如果用户代理是MSIE(Internet Explorer),则将请求重写到/ie/目录下的相应文件。
通过这些方法,你可以灵活地使用Nginx实现各种URL重写需求。