Wie kann ich eine Rewrite-Regel schreiben, um eine Multisite zu verschieben?

Wie wir in meiner Frage zu dem Versuch, die URL einer Multisite zu ändern, abgeschlossen haben, könnte die einfachste Lösung darin bestehen, eine Rewrite-Regel hinzuzufügen, da es sich hier eigentlich nur um das Endergebnis handelt.

Ich habe versucht, eine Rewrite-Regel in einer ziemlich einfachen Weise hinzuzufügen, die nicht zu funktionieren schien, also bin ich zurück, um Sie um Hilfe zu bitten. Ich denke, das ist hier relevant, weil die Rewrite-Regel selbst nicht kompliziert ist, sondern eher, wie sie mit WordPress interagiert, was meine Bemühungen entmutigend macht.

Die aktuelle Verzeichnisstruktur sieht ungefähr so ​​aus

r.info / +- blogs +- th | - .htaccess | + - wp-admin, wp-content, wp-includes +- st 

Die ursprüngliche Idee war, dass die neue Multisite in st / or.info/blogs/st gehen würde, aber es stellt sich heraus, dass die URL /r.info/blogs/th als Basis betrachtet wird, was zu /r.info/blogs/ führt. th / st

Im Moment gibt es keine .htaccess-Datei in irgendeinem Verzeichnis, außer wie oben erwähnt. Ich kann mir nicht vorstellen, dass das aus vielen offensichtlichen Gründen so bleiben wird.

 -bash-3.2$ cat .htaccess #RewriteEngine On # Turn on the rewriting engine #RewriteRule /blogs/st/(.*)$ /blogs/th/st/$1 [NC] # BEGIN wtwp_cache  # Text AddType text/css .css AddType application/x-javascript .js AddType text/html .html .htm AddType text/richtext .rtf .rtx AddType text/plain .txt AddType text/xml .xml # Image AddType image/gif .gif AddType image/x-icon .ico AddType image/jpeg .jpg .jpeg .jpe AddType image/png .png AddType image/svg+xml .svg .svgz # Video AddType video/asf .asf .asx .wax .wmv .wmx AddType video/avi .avi AddType video/quicktime .mov .qt AddType video/mp4 .mp4 .m4v AddType video/mpeg .mpeg .mpg .mpe # PDF AddType application/pdf .pdf # Flash AddType application/x-shockwave-flash .swf # Font AddType application/x-font-ttf .ttf .ttc AddType application/vnd.ms-fontobject .eot AddType application/x-font-otf .otf # Audio AddType audio/mpeg .mp3 .m4a AddType audio/ogg .ogg AddType audio/wav .wav AddType audio/wma .wma # Zip/Tar AddType application/x-tar .tar AddType application/x-gzip .gz .gzip AddType application/zip .zip   ExpiresActive On # Text ExpiresByType text/css A31536000 ExpiresByType application/x-javascript A31536000 ExpiresByType text/html A3600 ExpiresByType text/richtext A3600 ExpiresByType text/plain A3600 ExpiresByType text/xml A3600 # Image ExpiresByType image/gif A31536000 ExpiresByType image/x-icon A31536000 ExpiresByType image/jpeg A31536000 ExpiresByType image/png A31536000 ExpiresByType image/svg+xml A31536000 # Video ExpiresByType video/asf A31536000 ExpiresByType video/avi A31536000 ExpiresByType video/quicktime A31536000 ExpiresByType video/mp4 A31536000 ExpiresByType video/mpeg A31536000 # PDF ExpiresByType application/pdf A31536000 # Flash ExpiresByType application/x-shockwave-flash A31536000 # Font ExpiresByType application/x-font-ttf A31536000 ExpiresByType application/vnd.ms-fontobject A31536000 ExpiresByType application/x-font-otf A31536000 # Audio ExpiresByType audio/mpeg A31536000 ExpiresByType audio/ogg A31536000 ExpiresByType audio/wav A31536000 ExpiresByType audio/wma A31536000 # Zip/Tar ExpiresByType application/x-tar A31536000 ExpiresByType application/x-gzip A31536000 ExpiresByType application/zip A31536000    Header set Pragma "public" Header append Cache-Control "public, must-revalidate, proxy-revalidate" Header unset ETag     Header unset Set-Cookie   # END wtwp_cache # BEGIN wtwp_security  RewriteEngine On RewriteBase /blogs/th/st/ RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]   Order allow,deny Deny from all  Options -Indexes # END wtwp_security # BEGIN WordPress  RewriteEngine On RewriteBase /blogs/th/ 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 

Ich habe verschiedene Varianten der RewriteRule ausprobiert, die du auskommentiert siehst, die ich zurückgelassen habe, falls das Placement ein Problem ist, zB:

 RewriteRule ^r.info/blogs/st/$ r.info/blogs/th/st/ 

etc.

Anfragen an die URL in der Umschreibung gibt einen Fehler 404 zurück, aber der Zugriff auf die unerwünschte URL funktioniert direkt gut.

Solutions Collecting From Web of "Wie kann ich eine Rewrite-Regel schreiben, um eine Multisite zu verschieben?"

WordPress erstellt automatisch eine .htaccess-Datei, wenn Sie Permalinks verwenden. Es wird keine .htaccess-Datei geben, wenn Permalinks auf den Standardwert gesetzt ist, es sei denn, eine andere Komponente hat es erstellt. WordPress sucht nur nach der einzigen Instanz von .htaccess im WP-Stammverzeichnis (sofern Sie nicht speziell eine separate Unterordnerinstallation eingerichtet haben) und ignoriert alle Versionen in Unterordnern.

Versuchen Sie, mit einer RewriteCond Prüfung nach den Ordner-Layern zu RewriteCond , die Sie entfernen möchten, und schreiben Sie diese dann bis zur obersten oder obersten Ebene um, je nachdem, welches Ziel Sie haben.

So etwas sollte produzieren, wonach Sie suchen:

 RewriteEngine on # # stuff to let through (ignore) RewriteCond %{REQUEST_URI} "/folder1/" [OR] RewriteCond %{REQUEST_URI} "/folder2/" RewriteRule (.*) $1 [L] 

Weitere Details zu diesem Ansatz finden Sie hier und direkt von Apache