nginx配置rewrite时,出现$1等字眼就爆500错误

#rewrite .* /index.php last;
rewrite ^/(.*)$ /index.php/$1 last;

这两行代码,上一行可以正常使用,后面那行一使用就报错,为什么??是不是有什么配置要开启,看了文档也没找到呀。。。

阅读 7.9k
3 个回答

rewrite ^/(.*)$ /index.php/$1 last;$1 代表的是 ^/(.*)$ 正则捕获的内容,也就是(.*) 捕获到的内容。

  • ^/(.*)$^/ 表示已 / 开头, . 表示匹配除换行符以外的任意字符,* 表示重复0次或更多次,$ 表示匹配字符串的结束,() 表示捕获(匹配)内容。

  • 小括号()之间匹配的内容,可以在后面通过$1来引用,$2表示的是前面第二个()里的内容。

也就是当一个请求链接为 /test,就会被重写为/index.php/test并重定向到/index.php/test,所以请确保有这样的资源地址 /index.php/test

nginx -t测试下配置是否正确
500错误,看ErrorLog一般都有告诉你原因

把那个正则去掉试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题