Multisite, verschiedene Domains, optionales Unterverzeichnis und htaccess

Hier ist die Situation:

Aufbau

Ich habe ein WordPress-Multisite-Setup, bei dem sich verschiedene Sites auf verschiedenen Domains befinden. Einige dieser Websites sind in einem Unterordner in ihrer Domäne enthalten, andere nicht. Für die Websites, in denen sie sich in einem Unterordner befinden, ist der Name des Unterordners auf allen Sites gleich.

Hier sind die Beispiele:

   Site |  URL
 -----------------------
 Hauptseite |  beispiel.com
 Standort A |  sitea.com
 Standort B |  siteb.com/foo
 Standort C |  sitec.com/foo
 Standort D |  Standort.de

Hier ist der relevante Teil meiner wp-config.php:

/* Multisite */ define( 'WP_ALLOW_MULTISITE', true ); define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); define('DOMAIN_CURRENT_SITE', 'example.com'); define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1); 

Hier ist mein .htaccess:

 # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] # END WordPress 

Problem

In dieser Konfiguration funktionieren Main Site und Sites A & D, aber Sites B & C geben einen 500-Fehler an. Wenn ich RewriteBase / in RewriteBase /foo/ ist das Gegenteil der Fall: Sites B & C funktionieren, aber Main Site, Site A & Site D geben einen 500 Fehler.

Wenn die Auswirkungen von RewriteBase /foo/ nur bedingt auf Domänen angewendet werden, bei denen der URI mit /foo gestartet wurde, dann würde dies das Problem lösen. Leider verstehe ich nicht, wie WordPress und .htaccess gut genug interagieren, um dies zu tun.

Hat jemand irgendwelche Vorschläge?

Vielen Dank.

Solutions Collecting From Web of "Multisite, verschiedene Domains, optionales Unterverzeichnis und htaccess"

Ich fand eine Lösung für jeden, der darüber stolpern könnte. Grundsätzlich hat jeder Teil eines Standard-WordPress htaccess jetzt zwei RewriteConds: einen für den Fall, dass er sich in einem Unterordner befindet, und einen anderen für den Fall, dass er nicht vorhanden ist. Abhängig von dieser Bewertung wird die entsprechende RewriteRule angewendet.

 # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteCond %{REQUEST_URI} ^/([_0-9a-zA-Z-]+/)wp-admin$ RewriteRule ^([_0-9a-zA-Z-]+/)wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_URI} !^/([_0-9a-zA-Z-]+/)wp-admin$ RewriteRule ^wp-admin$ wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteCond %{REQUEST_URI} ^/([_0-9a-zA-Z-]+/)(wp-(content|admin|includes).*) RewriteRule ^([_0-9a-zA-Z-]+/)(wp-(content|admin|includes).*) $2 [L] RewriteCond %{REQUEST_URI} !^/([_0-9a-zA-Z-]+/)(wp-(content|admin|includes).*) RewriteRule ^(wp-(content|admin|includes).*) $1 [L] RewriteCond %{REQUEST_URI} ^/([_0-9a-zA-Z-]+/)?(.*\.php) RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteCond %{REQUEST_URI} !^/([_0-9a-zA-Z-]+/)?(.*\.php) RewriteRule ^(.*\.php)$ $1 [L] RewriteCond %{REQUEST_URI} ^/foo/ RewriteRule . foo/index.php [L] RewriteCond %{REQUEST_URI} !^/foo/ RewriteRule . index.php [L] # END WordPress