it-swarm.com.de

ReWriteRules und WordPress Multi-Sites mit Unterverzeichnissen

Es ist schwierig, die ReWriteRules- und URL-Strukturen für ein Wordpress 3.4.2-Blog (neueste Version dieses Beitrags) mit mehreren aktivierten Sites einzurichten.

www.ourdomain.com/ ist die Homepage einer E-Commerce-Site.

Wir haben auch www.ourdomain.com/example-category/ und www.ourdomain.com/example-product/

Als unsere Kategorie und Produkt-URL-Strukturen. Das funktioniert alles.

Ich habe die WordPress-Dateien im physischen Ordner/var/www/ourdomain/wordpress installiert. Derzeit wechselt www.ourdomain.com/wordpress/ zum Standard-Blog. www.ourdomain.com/wordpress/blog1 ist der erste Blog und www.ourdomain.com/wordpress/blog2 ist der zweite.

Ich bin zu diesem Punkt gekommen, indem ich hinzugefügt habe

ReWriteRule ^/wordpress - [L,NC]

zu unserer vhost Datei (.htacess ist deaktiviert).

Wir möchten, dass www.ourdomain.com/wordpress(/*) (von Benutzern) direkt zur Startseite www.ourdomain.com/ weitergeleitet wird, da der Ordner /wordpress nur zum Speichern von Dateien dient und nicht als eigentlicher Blog für Benutzer gedacht ist.

Anforderungen für www.ourdomain.com/blog/ sollten automatisch zu www.ourdomain.com/wordpress/blog1 umgeleitet werden. Anforderungen für www.ourdomain.com/policies/ sollten automatisch zu www.ourdomain.com/wordpress/blog2 umgeleitet werden.

So:

/wordpress/ -> 301 /
/blog/ -> silent /wordpress/blog1
/policies/ -> silent /wordpress/blog2

In der Theorie scheint es einfach, in der Praxis jedoch nicht so einfach zu sein.

Ich habe angefangen mit:

ReWriteRule ^/wordpress - [L,NC]
RewriteRule ^/blog/(.*)$ /wordpress/blog/$1 [L,NC]  
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^/blog/ /wordpress/blog/index.php [L]

Was zu einem 404 bei/blog/führt. Natürlich, weil /wordpress/blog/index.php keine Datei ist. Im Ordner blog befindet sich kein Ordner wordpress. Die Datei, die ich laden möchte, ist /wordpress/index.php, die die URL liest, um zu bestimmen, welches Blog geladen werden soll. Die URL wurde jedoch geändert, sodass dies fehlschlägt. Ich brauche eine Möglichkeit, /wordpress/index.php über die URL/blog/aufzurufen, aber /wordpress/index.php muss die Anforderung so anzeigen, als ob der Benutzer zu /wordpress/blog gegangen wäre.

Gibt es eine Möglichkeit, eine gefälschte URI von modRewrite an PHP zu übergeben? Oder eine alternative Möglichkeit, dies zu erreichen, ohne separate Kopien von WordPress zu installieren?

UPDATE:

Da dies in der aktuellen Version anscheinend nicht unterstützt wird, ich es aber noch brauche, bevor die neue Version veröffentlicht wird, wäre es meiner Meinung nach eine Möglichkeit, Folgendes zu verwenden:

RewriteRule ^/blog/ /wordpress/index.php?site=blog [L]

Ändern Sie dann die WordPress-Datei, die die URL liest, und legen Sie die Site-Variable stattdessen auf der Grundlage des GET-Parameters fest. Funktioniert das? Welche Datei enthält den Code zum Einstellen der aktuellen Site?

1
Nick

Dies ist derzeit für ein Multisite-Setup nicht möglich. Es sollte in WordPress 3.5 möglich sein, das voraussichtlich nächsten Monat veröffentlicht wird. Ihre einzige Lösung ist also: Warten.

Update 26. Dezember: Dies ist jetzt in WordPress 3.5 ohne weitere Hacks möglich. :)

1
fuxia