2012-04-13 10 views
6

Ich versuche herauszufinden, wie eine 301-Weiterleitung in meiner Htaccess-Datei vorgenommen werden kann, um einige Dateien in eine neue Domäne umzuleiten. Hier ist, was muss ich wissen, wie zu tun:301 Umleitung von URL mit Abfragezeichenfolge zu neuer Domäne mit anderer Abfragezeichenfolge

ALTE URL: http://www.example.com/index.php?page=news&id=2366

NEW URL: http://www.example2.com/news.php?name=23546

Die Umleitungen müssen nicht automatisch erstellt werden. Ich kann die Seiten hart umcodieren, die ich in der htaccess-Datei umleiten muss, ich weiß nur nicht das zu verwendende Format, da ich gelesen habe, dass eine "Standard" 301-Umleitung nicht mit Abfragezeichenfolgen funktionieren wird.

Im Grunde ist das, was ich tun möchte, aber aus meiner bisherigen Forschung klingt es nicht so, als könnte es so gemacht werden.

redirect 301 /index.php?page=news&id=2366 http://www.example2.com/news.php?name=23546 

Antwort

18

Sie könnten eine Rewrite-Regel mit einer Query-String-Übereinstimmungsbedingung verwenden, wie zum Beispiel:

RewriteEngine On 
RewriteCond %{REQUEST_URI} ^/index.php$ 
RewriteCond %{QUERY_STRING} ^page=news&id=2366$ 
RewriteRule ^(.*)$ http://www.example2.com/news.php?name=23546 [R=301,L] 

Kasse this blog page für mehr Informationen darüber, wie das funktioniert.

+0

Großartig. Danke für Ihre Hilfe! –

+0

Ich hatte das selbe Problem - ich bin gespannt, warum die einfache Weiterleitung 301 ... nicht funktioniert, wie es nach meinem ganzen Googeln zu sein scheint. – GDP

0

Ich hatte das gleiche Problem, aber immer noch komplizierter, weil ich andere Parameter verwerfen musste.

So: my-old-page.php?a=1&b=2&c=3

Ich brauche eine der Saiten zu benutzen und die andere zu verwerfen, aber diese Lösung funktioniert nur, wenn ich den letzten Parameter (c = 3) verwendet werden soll. Wenn ich will, andere verwenden (a = 1 oder b = 2) läuft es auf ein 404. Nach viel kämpfen und auf der Suche, ich eine Antwort gefunden:

RewriteCond %{QUERY_STRING} ^.* ?b=2.* ?$ (without space after the *) 

RewriteRule (.*) http://www.my-webpage.php/new-location-2? [R=301,L] 

Die Lösung ist hinzuzufügen ".*?" vor und nach der zu verwendender Parameter

Ich weiß nicht, ob das die beste Lösung ist, aber es funktioniert.

Verwandte Themen