2017-05-17 4 views
1

Grundsätzlich bin ich eine Abfragezeichenfolge, die ich in eine URL neu formatieren muss, wo die Werte durch Schrägstriche und wo die Punkte aus einem der Werte gelöscht werden. Ich kann beides tun, aber wenn ich versuche, sie zusammen zu ketten, funktioniert das nicht.Anwenden zweiter mod_rewrite Abfrage

Hier ist die ursprüngliche URL

https://www.example.com/?id1=5&id2=7&id3=9&id4=7&id5=source.website.com&id6=5 

Hier ist, was ich jetzt haben ...

# Takes the dots and replaces name of server 
RewriteCond %{QUERY_STRING} ^(.*source.website.com.*)$ 
RewriteCond %{QUERY_STRING} (.*id5=).*(id6=.*)$ 
RewriteRule ^(.*) %1newwebsitecom&%2? 

# Rewrites Query to URL 
RewriteCond %{QUERY_STRING} ^id1=(\w+)&id2=(\w+)&id3=(\w+)&id4=(\w+)&id5=([a-zA-Z0-9\.\%]+)&id6=(\w+) 
RewriteRule ^(.*) https://www.example.com/dir/%1/%2/%3/%5/%6? 

Getrennt davon beide dieser Arbeit. Die zweite Regel nimmt jedoch einfach die Abfrage und führt die Aktionen so aus, als ob die erste nie stattgefunden hätte. Wie komme ich da rum?

Antwort

1

Haben Sie versucht, die beiden Regeln zusammenzuführen?

Ich habe diese Regel auf htaccess.madewithlove.be getestet und es scheint, die gewünschten Ergebnisse zu erzielen.

RewriteCond %{QUERY_STRING} ^(.*source.website.com.*)$ 
RewriteCond %{QUERY_STRING} (.*id5=).*(id6=.*)$ 
RewriteCond %{QUERY_STRING} ^id1=(\w+)&id2=(\w+)&id3=(\w+)&id4=(\w+)&id5=([a-zA-Z0-9\.\%]+)&id6=(\w+) 
RewriteRule ^(.*) https://www.example.com/dir/%1/%2/%3/%4/newwebsitecom/%6? 
+0

Dies ist eine gute Idee und funktioniert, aber ich verstehe immer noch nicht das ursprüngliche Problem. Ich verstehe auch nicht, warum das ohne die [L] -Flagge nicht funktioniert. –