Fügen Sie mit HTACCESS in WordPress Multisite ein Unterverzeichnis zur WP-CONTENT-URL hinzu
P粉917406009
P粉917406009 2024-01-02 13:50:59
0
1
815

Ich wandle meine Single-Site-WordPress-Installation in eine Multisite-Installation um. Ich versuche, defektes CSS/JS auf meiner Hauptseite zu reparieren.

Ich habe derzeit zwei Websites in meinem Netzwerk:

  • http://www.example.com (Hauptseite)
  • http://dev.example.com (Nebenfach)

Meine Multisite-Installation befindet sich in einem Unterverzeichnis, das wir „wordpress“ nennen. Der Dateipfad sieht also so aus: public_html/wordpress.

Mein Ziel ist, dass die URL keiner der Websites das Unterverzeichnis „wordpress“ enthält. Alles scheint gut zu funktionieren, bis auf defektes CSS und JS auf der primären Site (die sekundäre Site sieht gut aus).

Bei der Überprüfung des Codes verweisen alle CSS- und JS-Aufrufe auf http://www.example.com/wp-content/, aber die Dateien werden dort nicht gefunden. Wenn ich in meinem Browser auf http://www.example.com/wordpress/wp-content gehe, finde ich diese Dateien. Ich möchte den WordPress-Ordner ausblenden, die Dateien aber trotzdem abrufen können.

Ich weiß nicht, wie ich die HTACCESS-Datei einrichten soll. Ich habe einige vorläufige Änderungen daran vorgenommen, damit Multisites in Unterverzeichnissen ordnungsgemäß funktionieren. Dies sind die Anleitungen, die ich auf StackOverflow und anderen Online-Sites gefunden habe und die zeigen, wie man eine Site auf eine Multisite mit Unterverzeichnissen verschiebt und die Unterverzeichnisse ausblendet. Ich habe keine Informationen zur Behebung von CSS/JS-Fehlern gefunden.

Ich glaube, ich muss eine oder mehrere der 3 HTACCESS-Dateien aktualisieren.

1.) public_html/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /wordpress/
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /wordpress/index.php [L] 
</IfModule>

2.) public_html/wordpress/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /wordpress/
RewriteRule ^index.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)  [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*.php)$  [L]
RewriteRule . index.php [L]
</IfModule>

3.) public_html/wordpress/wp-content/.htaccess Die Datei existiert nicht, aber ich habe sie erstellt. Meine Idee ist, die Dateien ohne das WordPress-Unterverzeichnis aufzurufen, aber sie müssen sich so verhalten, als ob sie das Unterverzeichnis enthalten würden. Beispielsweise ist derzeit http://www.example.com/wp-content/uploads/image.jpg defekt, aber http://www.example.com/wordpress/wp-content/uploads/image.jpg funktioniert. Ich möchte, dass es umgekehrt ist, oder ich möchte, dass beide Wege funktionieren.

<IfModule mod_rewrite.c>
RewriteEngine on
# ADD WORDPRESS IF URL DOES NOT HAVE IT
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/wordpress/
RewriteRule ^(.*)$ /wordpress/
</IfModule>

Ich habe versucht, verschiedene Zeilen zu verschiedenen HTACCESS-Dateien hinzuzufügen, aber keine davon hat funktioniert. Ich bin mir auch nicht sicher, in welcher Zeilennummer die neue Regel eingefügt werden soll. Eine meiner neuen Regeln ist vielleicht richtig, aber am falschen Ort. Hier ist eines, von dem ich wirklich dachte, dass es funktionieren würde, es aber nicht funktioniert hat.

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/ [R=301,NC,L]


P粉917406009
P粉917406009

Antworte allen(1)
P粉930448030

首先,您应该删除所有 .htaccess 文件,只保留根目录中的一个:public_html/.htaccess

其次,您的最后一条规则不起作用,因为稍微错误。

您应该将其更改为:

RewriteRule ^/wp-content/(.*)$ /wordpress/wp-content/$1 [R=301,NC,L]

致:

RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,NC]

因为你不需要起始/,也不需要301重定向。您希望隐藏 wordpress 文件夹,并将请求的网址从 wp-content/(.*) 映射到 wordpress/wp-content/$1代码>

此外,此规则必须是 .htaccess 文件中的第一个规则,其优先级高于以下默认 WordPress 规则。来自 public_html/ 的最终且唯一 .htaccess 应如下所示:

RewriteEngine On
RewriteBase /
RewriteRule ^wp-content/(.*)$ wordpress/wp-content/$1 [L,nc]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

希望对你有帮助。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!