在nginx中处理index.php和非www
我有一个nginx配置文件,当前通过index.php为Zend Framework应用程序重写请求。示例代码如下所示:在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
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
,然后只需在新的服务器块中添加一行重写即可