2016-04-26 8 views
0

Ich werde versuchen, kurz zu sein. Ich habe folgende nginx Rewrite url:Nginx Rewrite & Parameter Full-URL und Dateierweiterungen

rewrite ^/(.*)?$ /index.php?completeURL=$1 last; 

Ich möchte eine URL wie:

http://mywebsite.com/http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1 

Anfrage:

http://mywebsite.com/index.php?completeURL=http://www.otherwebsite.com/dir1/dirx/article.php&id=2&category=1 

Derzeit ist die nginx haben in der Regel ein Problem. Beispiel: Wenn der Parameter eine .php Erweiterung enthält, sucht er nach dieser Datei auf meinem Server.

Beispiel: http://mywebsite.com/dir1/dirx/article.php

Wie kann ich dieses Problem Ihrer Meinung nach lösen?


UPDATE: hier die nginx-Konfiguration (und schreiben) Dateien:

Antwort

0

Th Die einfachste Lösung (unter der Annahme, dass der Server nichts anderes tut als index.php) besteht darin, den üblichen location ~ \.php$ Block zu entfernen und eine rewrite ... break; im selben Block wie die fastcgi_pass durchzuführen. Es gibt eine Reihe von Möglichkeiten, dies zu erreichen, darunter:

location/{ 
    rewrite ^/(.*)?$ /index.php?completeURL=$1 break; 
    fastcgi_pass ... 
    ... 
} 

Eine alternative Strategie ist es, die Rewrite nur ausführen, wenn eine lokale Datei nicht bereits vorhanden, aber Sie müssen sicherstellen, dass .php Dateien zu getestet werden . Zum Beispiel:

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location ~ \.php$ { 
    try_files $uri @rewrite; 
    fastcgi_pass ... 
    ... 
} 
location @rewrite { 
    rewrite ^/(.*)?$ /index.php?completeURL=$1 last; 
}   
+0

habe ich versucht, Ihre zweite Lösung, aber ich bekomme diese Fehlermeldung: '2016.04.26 22.21.05 [Fehler] 10591 # 0: * 1846 Umschreiben oder interne Umleitung Zyklus während Umleitung an den angegebenen Ort "@rewrites", Client: xx.xx.xx.xx, Server: website.com, Anfrage: "GET /http://www.website.com/dfgdfgghgh.cfm HTTP/2.0", Host: " website.com "' – Ivan

+0

Es wird Schleife, wenn /index.php nicht existiert. Ist 'root' korrekt definiert? –

+0

Hallo @ Richard Smit. Ich habe meinen Beitrag aktualisiert. Ich habe die vollständige nginx-Konfigurationsdatei hinzugefügt. versuchen Sie uns einen Blick zu geben. – Ivan