StatusNet在Nginx下的rewrite规则

StatusNet在Nginx下的rewrite规则。假设StatusNet装在abc.creke.net的sn目录下,访问地址为abc.creke.net/sn/,则其在Nginx下的rewrite规则如下:

#StatusNet
location /sn
{
        try_files $uri $uri/ @statusnet;
}
location @statusnet
{
        rewrite ^/sn/(.*)$ /sn/index.php?p=$1 last;
}

将其放在“server{}”块中靠前位置即可。

如果不启用fancy url,这时会发现登录页面404,因为类似“abc.creke.net/sn/index.php/main/login”这类地址nginx不认为是需要交到php处理的地址。这时有两种解决方法。

第一种,最简单的就是在config.php中加上开启fancy url的语句,同时按照上面说的配好rewrite:

$config['site']['fancy'] = true;

第二种,就是将上面的rewrite中的rewrite规则换成:

rewrite ^/sn/index\.php\(.*)$ /sn/index.php?p=$1 last;

好吧,除了我,谁那么无聊用第二种啊……用第一种呗。

Leave a comment