Nginx重写子目录

时间:2016-04-04 10:22:20

标签: .htaccess mod-rewrite nginx

我试图对nginx进行重写。它正在工作但是对于子目录,它使用root的index.php而不是单个子目录中的index.php。这就是我的目录结构的样子:

/index.php
/p/index.php
/c/index.php

这是我的重写:

if (!-e $request_filename){
  rewrite ^/([^./]+)/?$ /index.php?act=$1 break; #need break?
  rewrite ^/([^./]+)/(.+)/?$ /index.php?act=$1&upm=$2 break;
  rewrite ^/([^./]+)/([^./]+)/?$ /$1/index.php?act=$2;
}

我尝试为每个子目录添加一个条目,但它不起作用:

  location /p/ {
        root /home/user/public_html/p/;
        rewrite ^/([^./]+)/(.+)/?$ /index.php?act=$1&upm=$2 break;
  }

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

rewrite ^/([^./]+)/([^./]+)/?$ /$1/index.php?act=$2;将永远不会被执行,因为之前的重写将始终匹配。您可以尝试交换重写#2和#3。

root /home/user/public_html/p/;可能有误,因为/p/会出现$document_root$uri两次。

rewrite中的location /p/应该重写为/p/index.php而不是/index.php