我有一个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重写?
答案 0 :(得分:0)
两个独立的服务器块(与您的问题完全一样)。第一个服务器块是默认值,它已经处理www
前缀域,并且(可能)正确处理index.php
重写。
第二个服务器块仅匹配没有www
前缀的域名。
如果您想以相反的方式执行此操作,那么在重定向之前重写index.php
,然后只需将重写行添加到新服务器块。