2012-10-25 15 views
15

Ich migrierte erfolgreich eine Wordpress-Site zu Drupal. Leider waren die Inhalts-URLs in Wordpress so etwas wie www.example.org/?p=123. Meine Domain ist immer noch dieselbe, aber ich möchte eine Weiterleitung über htaccess machen, da Drupal URLs nicht zu www.example.org/?p=123 zulässt. Mit anderen Worten, der Inhalt hat nicht die gleiche URL wie in Wordpress. Zum Beispiel würde die neue Drupal URL etwas wie www.example.org/content/MyNewPageUmleiten von URLs basierend auf Abfragezeichenfolge?

sein, die ich in meiner .htaccess-Datei versucht und es nicht

Redirect 301 /\?p=375 http://www.example.org/content/MyNewPage 

Also habe ich versucht, die unten nicht funktioniert, aber es funktioniert auch nicht.

Redirect 301 /\?p\=375 http://www.example.org/content/MyNewPage 

Nur als Test, ich versuchte das unten und es hat funktioniert.

Redirect 301 http://www.example.org http://www.google.com 

stellte ich sicher, dass meine Redirect Regel an der Spitze der Liste in meinem .htaccess ist so wird es zuerst ausgewertet werden. Wie behebe ich das?

Antwort

29

Weder Redirect noch RedirectMatch können Sie eine Abfragezeichenfolge für die Umleitungsquelle angeben. [Source]

Sie haben für Mod-Rewrite verwenden, um auf Query-String-basierte Umlenken:

RewriteCond %{QUERY_STRING} ^p=375$ 
RewriteRule (.*) http://www.example.org/content/MyNewPage? [R=301,L] 
+0

Leider werde ich auf eine 404-Seite umgeleitet, die nicht gefunden wird, und meine URL bleibt weiterhin hängen und zeigt http://www.example.org/?p=375. Ich kann bestätigen, dass "content/MyNewPage" existiert und funktioniert. Ich kann auch bestätigen, dass meine RewriteRules funktionieren, weil sie in Drupal funktionieren. – user785179

+0

Löschen Sie den Cache Ihres Browsers und versuchen Sie es erneut, Browser Cache '301 Permanent Redirect – undone

+0

Guter Vorschlag, aber jetzt sagt Firefox, dass es als eine Endlosschleife umleitet. "Firefox hat festgestellt, dass der Server die Anfrage für diese Adresse auf eine Weise umleitet, die niemals abgeschlossen wird." Die URL kommt als http://www.example.org/content/MyNewPage?p=375 – user785179

1

Sie können prüfen, ModRewrite in Ihrer .htaccess verwenden

<IfModule mod_rewrite.c> 

RewriteEngine On 

RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteCond %{QUERY_STRING}  ^p=345$ [NC] 
RewriteRule index.php content/MyNewPage [NC,L,R=301] 

</IfModule> 

Und Sie können auch die übergeben werden soll alte Seiten-ID zu der neuen verketteten URL (oder vielleicht von QS?):

+0

Ich habe Ihre Methode versucht, aber ich werde auf eine 404-Fehlerseite gebracht. – user785179

Verwandte Themen