2016-04-04 9 views
0

Ich versuche ein Neuschreiben für Nginx. Es funktioniert, aber für Unterverzeichnisse nimmt es die index.php des root anstelle der index.php im einzelnen Unterverzeichnis. Dies ist, wie meine Verzeichnisstruktur wie folgt aussieht:Nginx Rewrite Unterverzeichnis

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

und dies ist meine Rewrite:

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; 
} 

Ich habe versucht, für jedes Unterverzeichnis einen Eintrag hinzufügen, aber es funktioniert nicht entweder:

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

Irgendwelche Ideen?

Antwort

0

Die rewrite ^/([^./]+)/([^./]+)/?$ /$1/index.php?act=$2; wird niemals ausgeführt, da die vorherige Umschreibung immer übereinstimmt. Sie könnten versuchen, die Umschreibungen Nr. 2 und Nr. 3 zu vertauschen.

Die root /home/user/public_html/p/; ist wahrscheinlich falsch als /p/ zweimal erscheinen, wie es in den $document_root und die $uri ist.

Die rewrite in Ihrem location /p/ sollte auf und nicht /index.php umschreiben?