2009-06-29 15 views
0

Ich bin neu in mod_rewrite. Ich versuche, eine URL an eine andere weiterzuleiten, aber ich kann sie nicht zum Laufen bringen.htaccess mod_rewrite mit dynamischen Parametern

sagen, dass ich diese URL weiterleiten möchten: /cansas.php?m=2 & id = 2-0-0-0 & sid = CANSAS zu /CANSAS-ist-gut-für-Sie und lassen Sie die Header antwortet mit einem 301, oder aktualisieren Sie einfach die URL über [R].

Ich habe dies in meinem .htaccess:

Optionen + FollowSymlinks

RewriteEngine auf

RewriteRule^cansas.php m = 2 & id = 2-0-0-0 & sid = cansas $ cansas-ist-gut-für-dich [NC, R = 301]

Ich dachte, ich könnte einfach eine einfache Weiterleitung machen, aber irgendwo auf dem Weg funktioniert es nicht mehr. Wenn ich die? M = 2 & id = etc ausschneide, leitet es nur den cansas Teil an den neuen Teil weiter, also sieht es so aus: cansas-ist-gut-für-dich? M = 2 & id = 2-0- 0-0 & sid = cansas.

Wie kann ich es weiterleiten, wenn ich mehrere dynamische Parameter in der URL-Zeichenfolge habe? ZB auf den Seiten muss ich weiter:

/cansas.php?m=2 & id = 2-0-0-0 & sid = CANSAS

/cansas.php?m=2 & id = 2 -1-0-0 & sid = CANSAS

/cansas.php?m=2 & id = 2-2-0-0 & sid = CANSAS

Jede mögliche Hilfe :) sehr geschätzt

M aybe es ist nicht möglich, es so zu machen? Die Art, wie ich es eingerichtet habe, ist, dass ich neue URLs namens/cansas-is-good-for-you verwenden möchte, die aus der Quelle /cansas.php?m=2 & id = 2-0-0 lesen -0 & sid = cansas, aber die im Browser angezeigte URL sollte:/cansas-is-good-for-you. Ich muss diese alte cansas.php weiterleiten? URL auf die neue URL :)

Antwort

1

Sie müssen die Abfrage einer URL mit der RewriteCond Richtlinie überprüfen, wie die RewriteRule Richtlinie nur den URL-Weg behandelt:

RewriteCond %{QUERY_STRING} ^m=2&id=2-0-0-0&sid=cansas$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

Wenn Sie nur für einen Parameter überprüfen verwenden Sie hierzu:

RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 

Und dies für Erstanträge genau das zu tun, müssen Sie die request line überprüfen:

RewriteCond %{THE_REQUEST} ^GET\ /cansas\.php 
RewriteCond %{QUERY_STRING} ^([^&]*&)*sid=cansas(&.*)?$ 
RewriteRule ^cansas\.php$ /cansas-is-good-for-you? [L,R=301] 
+0

Vielen Dank, Gumbo. Das hat es perfekt gelöst. –

Verwandte Themen