Apache rewrite转换为Nginx rewrite方法及注意事项
发布时间:2017-03-21 00:28 | 人气数:1604
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