wifihell 发表于 2014-6-26 21:57:05

LNMP1.1下rewrite规则变更问题

关注和使用LNMP一年多,受益匪浅,在此感谢军哥!刚刚升级到了1.1版本,遇到一个不大不小的问题。和之前1.0版本使用一样的rewrite规则(添加域名的时候选择discuz什么的,这个文件位于/usr/local/nginx/conf/下),却不生效。具体如下:

location / {
rewrite "^.+dl/?(.*)[      DISCUZ_CODE_0      ]quot; http://dl.wifihell.com/$1 permanent;
rewrite "^.+forum/?(.*)[      DISCUZ_CODE_0      ]quot; http://forum.wifihell.com/$1 permanent;
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
rewrite ^([^\.]*)/article-(+)-(+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
rewrite ^([^\.]*)/forum-(\w+)-(+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
rewrite ^([^\.]*)/thread-(+)-(+)-(+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
rewrite ^([^\.]*)/group-(+)-(+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
rewrite ^([^\.]*)/blog-(+)-(+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
rewrite ^([^\.]*)/(fid|tid)-(+)\.html$ $1/index.php?action=$2&value=$3 last;
rewrite ^([^\.]*)/(+*)-(+)\.html$ $1/plugin.php?id=$2:$3 last;
if (!-e $request_filename)

{
      return 404;
}

      }

第二行规则的本意是把http://www.wifihell.com/dl/csc.png的URL改为http://dl.wifihell.com/csc.png。此规则在1.0版本是完全可用的。经测试,扩展名为png、jpg、swf都不可能用,于是想到了对比前后生成的conf文件,也一样的。不过这个时候发现了一个规律,在conf文件内有一段

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                              expires      30d;
                        }


一不做二不休,改为

location ~ .*\.(aa)$
                        {
                              expires      30d;
                        }

这个时候跳转就正常了。因为有的图片链接是以前输入的,没心思一个一个去找来修改,就只有用这个办法。希望对遇到此问题的人有帮助,另外希望军哥给出一个更加详细的rewrite规则介绍,虽然能Google到不少,但是对于lnmp的实际应用意义不大。

[ 本帖最后由 wifihell 于 2014-6-26 21:59 编辑 ]

licess 发表于 2014-6-27 10:36:12

有时候图片的缓存可能会影响个别程序的伪静态

为适应pathinfo php的解析进行了一下调整
可以将location ~ [^/]\.php(/|$)替换为原来的location ~ .*\.(php|php5)?$ 试试看

wifihell 发表于 2014-7-1 00:05:15

回复 2# 的帖子

后期仔细对比了一下,以前的配置文件是直接把“”location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$“”段注释了,等于说和帖子中指出的内容没有直接关系。:L。遇到这个问题的人可以借鉴。
页: [1]
查看完整版本: LNMP1.1下rewrite规则变更问题