Apache mod_rewrite Nginx rewrite Regeln
Meine Website läuft auf Nginx und ich bin versucht, fügen Sie eine software, die in der sub-Verzeichnis der Website, die verwendet Apache mod_rewrite Regeln. E. g. www.mydomain.com/mySubfolder
Hier ist der Apache .htaccess
#Options -Indexes
<ifModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/system.*
RewriteRule ^(.*)$ index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?/$1 [L]
</ifModule>
Bisher habe ich es geschafft, die Hauptseite zu arbeiten, aber beim anfordern der login-Seite, verursacht es einen URL-redirect-Schleife. E. g. www.myDomain.com/login
Mit dabei:
location /mySubfolder {
if (!-e $request_filename) {
rewrite ^(.*)$ /mySubfolder/index.php?q=$1 last;
break;
}
}
Habe ich gelesen und versucht zu lernen, wie konvertieren von Apache zu Nginx und auch die .htaccess zu Nginx Konverter habe ich gefunden bei http://winginx.com/htaccess aber das tool scheint nicht zu erkennen, der %{REQUEST_URI} ^/- system.* Teil. Nach meiner Forschung und Studium, die ich kam mit:
location /mySubfolder {
if ($request_uri ~ "^/(system.*)$") {
rewrite ^/(.*)$ index.php?/$1 last;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /mySubfolder/index.php?q=$1 last;
break;
}
}
Ich bin ein absoluter noob auf dieser und wurde sogar gefragt, ob ich auch in der Nähe zu erreichen, diese Konvertierung zu arbeiten. Bitte helfen Sie.
Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie im Grunde genommen der falsche Ansatz zu verwenden, in der Nginx.
Obwohl es ist eine Art, davon auszugehen, dass die rewrite Regeln in der Apache würde zugeordnet werden, die in der Nginx-rewrite, das sind Sie nicht. Stattdessen sind Sie meist zugeordnet, um die Lage Regeln.
Dem block für
mySubfolder
Aussehen sollte:Sie eigentlich nicht umschreiben, was - Sie sind einfach nur gesagt, nginx, dass alle Anfragen, die mit /MySubfolder serviert werden sollte, die durch die Dateien aufgelistet, die in
try_files
. btw muss man sagen, Nginx übergeben den query string über das, was dieargs
tut.Sie anfügen können, die ursprüngliche URL (denke ich), aber es kann einfacher sein, einfach zu bedienen
$_SERVER['REQUEST_URI']
in Ihrem Skript.Glaube ich, dass die rewrite-Regel, die Sie haben, um die gleiche start-URI verursacht der /mySubFolder zu halten passenden.
In der Nginx-rewriting wird nur verwendet, wenn Sie wollen, um die externe URL-Pfade bedient werden, die von verschiedenen internen urls, und normalerweise wird die rewrite-Regel ist nicht in einem location-block.
Ich habe zum Beispiel eine Datei-server, serviert, Bilder und andere Dateien. Ich habe diese rewrite-Regeln in der server-block:
machen die externen URLs schön Aussehen. Aber dann sind Sie alle serviert von der location-block:
Den Standort block braucht nicht zu wissen über die URL schreibt, weil Sie fertig sind, bevor die Standort-block angetroffen wird.