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

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;
}}

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