Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在nginx中处理index.php和非www_Nginx_Url Redirection - Fatal编程技术网

在nginx中处理index.php和非www

在nginx中处理index.php和非www,nginx,url-redirection,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

我有一个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;
}
服务器{
听80;
服务器名称^(?www\)(?.+)$;
返回301$scheme://www.$domain$request\u uri;
}

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

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

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


如果您想以另一种方式执行此操作,即在重定向之前重写
index.php
,然后只需在新的服务器块中添加一行重写即可。

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

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

如果您想用另一种方法来做,那就是在重定向之前重写
index.php
,然后只需在新的服务器块中添加一行重写即可