Nginx und der Rewrite

Deex

Member
Es ist ein leidiges Thema den Rewrite von vorher Apache Mod Rewrite htaccess dateien auf nginx umzustellen. Regulär habe ich bei fast allem es nicht geschafft es zum laufen zu bekommen und selbst wenn ich den Rewrite Debug log anschalte passiert einfach garnichts als würde das ganze Modul nicht aktiv sein.

Daher die Frage 1.
Gibt es einen unterschied von rewrite direktiven wenn man diese in einem Vhost einstellt? Den einzigen Rewrite den ich bisher hinbekommen habe war auf einer Hauptdomäne. Auf Sub Vhosts wie name.domäne hat es nie funktioniert.

Frage 2.
Ich habe vormals diese kleine .htacess gehabt.

Code:
RewriteRule ^([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=original&a=$1&e=$2 [L]
RewriteRule ^(icon|small|medium|square)\/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=$1&a=$2&e=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) application.php?request=$1 [L,QSA]

Und genau hier das Problem als direktive für NGinx in dem Vhost sieht das so bei mir aus

Code:
location / { 
rewrite ^/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ /controller/Resizer.php?m=original&a=$1&e=$2 break; 
if (!-e $request_filename){ rewrite ^(.*)$ /application.php?request=$1 break; 
}
}

Ich verstehe einfach nicht wieso es nicht einmal eine Fehlermeldung gibt, es passiert einfach garnichts.
 

nowayback

Well-Known Member
RewriteRule ^([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=original&a=$1&e=$2 [L] RewriteRule ^(icon|small|medium|square)\/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ controller/Resizer.php?m=$1&a=$2&e=$3 [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (.*) application.php?request=$1 [L,QSA]
Code:
rewrite ^/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ /controller/Resizer.php?m=original&a=$1&e=$2 last;
rewrite ^/(icon|small|medium|square)\/([a-zA-Z]+)\.(jpg|gif|png|wbmp)$ /controller/Resizer.php?m=$1&a=$2&e=$3 last;
if (!-f $request_filename){
    set $rule_2 1;
}
if ($rule_2 = "1"){
    rewrite /(.*) /application.php?request=$1 last;
}
 

Deex

Member
Hier noch einmal ein Nachtrag, ich dachte mir es ist besser das vorhandene Thema dafür zu nehmen als ein neues. Seit einigen Tagen suche ich nach einer Lösung für das letzte Migrationsproblem mit Nginx. Es muss nicht einmal schön sein.

Meine Orginal .htaccess war dieses komplizierte ding hier auf Apache http://pastebin.com/ArRUYdzg

Unter zuhilfenahme von nginx rewrite Generatoren konnte ich das immerhin zum laufen bringen, die groben funktionen funktioneren mit diesem Rewrite. Jetzt ist nur das problem das im Unterschied zu Apache, er versucht .css, bilder und andere medien Dateien umzuschreiben. Ich würde dieses gerne exkludieren. Nach etwas Googlen dachte ich auch schon die lösung gefunden zu haben. Für alles eine location setzen was exkludiert werden soll, leider brachte auch dieses keinen Erfolg und so erzeugt es permanete Loops zu Medien Dateien.

Meine Serverblock Datei sieht derzeit so aus http://pastebin.com/kHSNM6Jz

Da sind auch die versuche zu sehen die Rewrite für diese Daten abzustellen.
 

Werbung

Top