2016-03-23 4 views
0

Ich benutze Joomla/MariaDB und ein anderes CMS/PostgreSQL auf dem gleichen Server mit Nginx als Webserver. Die Regeln für das Umschreiben von Joomla funktionieren ebenfalls, funktionieren aber nicht für das andere. Die Strukturen des URL aus dem PostgreSQL CMS wie folgt aussehen:Nginx URL Umschreiben für 2 verschiedene CMS

http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php 
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&new_blah=true 
http://example.com/dir/Something.php?somename=Blah_Setup/Otherstring.php&include=General_Info&worker_id=new 

Das ist, was ich habe:

location /sis/ { 
    rewrite ^(/sis)/Modules.php?modname=(.*/)\..*$ $1/$2 last; 
} 

Kann jemand zeigen, wo ich falsch gehe, bitte?

+0

Vielen Dank für die Rechtschreibkorrektur Herr Ford. –

Antwort

0

Es gibt zwei Probleme mit Ihrem Rewrite-Regel:

  • Die location /sis/ nicht URIs verarbeitet mit .php enden, so dass sie nie Ihre Rewrite-Regel
  • Der Query-String (vom ? an) sehen ist nicht als Teil der Rewrite-Muster betrachtet

Sie können ganz einfach den Wert des modname Parameters extrahieren, indem $arg_modname die vordefinierte variablen.

Wenn alle der /sys/Modules.php URLs neu geschrieben werden müssen, wird die Lösung leicht mit einer genauen Übereinstimmung Position erreicht:

location = /sis/Modules.php { 
    rewrite^/sis/$arg_modname last; 
} 

Wenn nur die URIs mit einem $arg_modname eine Rewrite benötigen, müssen Sie es wickeln in einem if ($arg_modname) { ... } Block. Es erhöht jedoch die Komplexität, sodass ein einfaches Beispiel schwieriger bereitzustellen ist, ohne die gesamte Serverkonfiguration zu sehen.

+0

Ich habe diese Lösung versucht, aber es gibt mir diese Antwort: 'Ajax get error Status: Fehler HTTP-Status: Nicht gefunden URL: http // Beispiel.com/Verzeichnis/Modules.php? Modname = Blah_Setup/Otherstring .php' –