我试图对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;
}
有什么想法吗?
答案 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
?