2009-03-12 6 views
3

Im Moment habe ich ein Blog mit Wordpress einrichten mit URLs wie folgt:Wordpress URL-Struktur ändern, während die richtige 301 mit mod_rewrite umleitet maintaing

www.domain.com/blog/?pid=384092817

Dies war, bevor ich etwas über irgendetwas wusste. Es gibt eine erhebliche Menge an Inhalt dort jetzt, und ich möchte meine URL-Struktur ändern:

www.domain.com/my-post-title-384092817

Gibt es eine Möglichkeit, meine .htaccess und Mod-Rewrite einzurichten, wenn Benutzer zur ersten URL gehen, erhalten sie eine 301-Weiterleitung an die zweite URL? Ich weiß, dass ich meine WordPress-Adresse (URL) von www.domain.com/blog auf www.domain.com und meine Permalink-Einstellung auf /% postname% -% post_id% ändern muss, aber wie sage ich den alten URLs, an die umgeleitet werden soll die neuen?

Antwort

3

Abhängig von Ihrer WP-Version können Sie einfach die Permalink redirect plugin verwenden - sollte den Trick für Sie innerhalb von WordPress und ohne mod_rewrite tun. Allerdings, wie von WordPress 2.3, viele dieser should work automatically. An diesem Punkt sollte das einzige, was Sie tun müssen, ist Ihre umleiten/Blog/... Anfragen auf die Route, die Sie über mod_rewrite tun können grob wie folgt aus:

RewriteRule ^blog(.*) $1 [QSA] 
4

Meinst du eigentlich, wenn Benutzer zur zweiten URL gehen, wird sie in die erste URL umgeschrieben? Das kann mit

RewriteRule /blog/.+-(\d+)$ /blog/?pid=$1 

erfolgen Wenn Sie 301 senden möchten Umleitungen von den alten URLs auf die neuen, dann können Sie nicht wirklich, dass mit einer .htaccess-Datei. Der Grund dafür ist, dass Apache mod_rewrite keinen Zugriff auf den Titel Ihres Beitrags hat, so dass er nicht weiß, welchen Titel er in die URL einfügen soll. Sie müssten diese Umleitung mit PHP machen.

BEARBEITEN: Weißt du was, das stimmt nicht ganz. Sie können einige ziemlich verrückte Dinge mit der RewriteMap directive tun, wie zum Beispiel Apaches anweisen, ein beliebiges Programm zu bitten, das Neuschreiben durchzuführen, und auf diese Weise könnten Sie beispielsweise ein PHP-Skript haben, das einige Datenbankarbeiten ausführt, um herauszufinden, was title ist und schreibt die URL entsprechend neu. Aber das scheint eine Art überkomplizierte Lösung zu sein und ich würde nicht vorschlagen, es zu tun - es wird viel sauberer und einfacher sein, die Weiterleitung direkt von PHP zu senden.

+0

Ich brauche diese url:/blog /? pid = 234 bis 301 umleiten zu dieser URL:/my-post-title-234 –

+1

Ich schätze, ich habe deine Frage zuerst falsch verstanden, aber sieh dir meine bearbeitete Antwort an: im Grunde kannst du das nicht (oder solltest du nicht tun) das mit mod_rewrite. –

+0

Was ist mit einer vereinfachten Version? Gehen Sie von/blog /? Pid = 123 zu /index.php?p=123 und lassen Sie dann Wordpress den Rest erledigen ... –