在nginx中处理index.php和非www

时间:2015-11-24 14:53:33

标签: nginx url-redirection

我有一个nginx配置文件,目前通过index.php为Zend Framework应用程序处理请求的重写。示例代码如下:

server { 
    listen 80 default_server
    etc....

    rewrite ^/index\.php/?(.*)$ /$1 permanent;

    try_files $uri @rewriteapp;
    location @rewriteapp {
        rewrite ^/(.*)$ /index.php/$1 last;
    }  
    etc....
}

但是,我现在需要添加重定向,以便任何域的任何非www请求都使用301处理到www等效。

我遇到了一些例子:

server {
    listen 80;
    server_name ~^(?!www\.)(?<domain>.+)$;
    return 301 $scheme://www.$domain$request_uri;
}

但是我如何组合所有内容,以便首先使用301重定向任何非www,然后通过index.php重写?

1 个答案:

答案 0 :(得分:0)

两个独立的服务器块(与您的问题完全一样)。第一个服务器块是默认值,它已经处理www前缀域,并且(可能)正确处理index.php重写。

第二个服务器块仅匹配没有www前缀的域名。

如果您想以相反的方式执行此操作,那么在重定向之前重写index.php,然后只需将重写行添加到新服务器块。