Apache rewrite转换为Nginx rewrite方法及注意事项

发布时间:2017-03-21 00:28 | 人气数:402

rewrite 转换 注意事项: 

一、RewriteRule 替换成 rewrite 

二、前匹配条件 – 要去掉结尾符 $ 

三、前匹配条件 – 中的点. 要加转义替换成 \. 

四、前匹配条件 – 路径开始前要加根目录索引符号 / 

五、前匹配条件 – 使用 双引号 括起条件 

六、后匹配条件 – 路径开始前要加根目录索引符号 / 

七、后匹配条件 – 要增加结尾符 last;

转换 示例:

Apache 的 Rewrite:

RewriteRule ^news/([0-9]+)-([0-9]+).html$ bencandy.php?fid=$1&id=$2

转成 Nginx 的Rewrite: 

rewrite "^/news/([0-9]+)-([0-9]+)\.html" /bencandy.php?fid=$1&id=$2 last;

PS: 注意事项中的第六条可能会导致页面找不到的404错误提示,如:404 Not Found 或 File not found. 等

最后,更改 Nginx 的rewrite规则后必须重启服务才能生效,重启命令为:#sudo service nginx restart

总结: Apache 的rewrite转 Nginx 的rewrite基本上不用重写,不过上述小细节必须注意,否则转发规则将不生效。

Nginx的Rewrite写在哪里?写在哪个文件下?

一般写在这里:/etc/nginx/sites-enabled 目录下的 your_website_1 文件当中,内容如下:

server { 
listen 80; 
server_name your_website_1.com www.your_website_1.com; 
error_log /var/www/your_website_1/error.log; 
access_log /var/www/your_website_1/access.log; 
error_page 404 = /404.html; 
location / { 
root /var/www/your_website_1; 
index index.html index.htm index.php;
#你的Rewrite写在下面: 
rewrite "^/search/" /do/search.php last; 
rewrite "^/news/([0-9]+)-([0-9]+)\.html" /bencandy.php?fid=$1&id=$2 last;
} 
location ~ \.php$ { 
root /var/www/your_website_1; 
fastcgi_pass 127.0.0.1:9000; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME /var/www/your_website_1$fastcgi_script_name;
include fastcgi_params; 
}}

关键词:nginx伪静态, apache伪静态, rewrite