Maison  >  Questions et réponses  >  le corps du texte

Ajoutez un sous-répertoire à l'URL WP-CONTENT à l'aide de HTACCESS dans le multisite WordPress

Je convertis mon installation WordPress à site unique en une installation multisite. J'essaie de réparer un CSS/JS cassé sur mon site principal.

J'ai actuellement deux sites internet sur mon réseau :

Mon installation multisite se trouve dans un sous-répertoire que nous appelons "wordpress". Le chemin du fichier ressemble donc à public_html/wordpress.

Mon objectif est qu’aucune des URL des sites Web ne contienne le sous-répertoire « wordpress ». Tout semble bien fonctionner, à l'exception des CSS et JS cassés sur le site principal (le site secondaire semble bien).

Lors de l'inspection du code, tous les appels CSS et JS pointent vers http://www.example.com/wp-content/, mais les fichiers n'y sont pas trouvés. Si je vais sur http://www.example.com/wordpress/wp-content dans mon navigateur, je trouverai ces fichiers. Je souhaite masquer le dossier WordPress tout en pouvant récupérer les fichiers.

Je ne sais pas comment configurer le fichier HTACCESS. J'y ai apporté quelques modifications préliminaires pour que les multisites dans les sous-répertoires fonctionnent correctement. Ce sont les guides que j'ai trouvés sur StackOverflow et d'autres sites en ligne sur la façon de déplacer un site vers un multisite avec des sous-répertoires et de masquer les sous-répertoires. Je n'ai trouvé aucune information sur la résolution des problèmes CSS/JS.

Je pense que je dois mettre à jour un ou plusieurs des 3 fichiers HTACCESS.

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 Le fichier n'existe pas mais je l'ai créé. Mon idée est d'appeler les fichiers sans le sous-répertoire wordpress, mais ils doivent se comporter comme s'ils contenaient le sous-répertoire. Par exemple, actuellement http://www.example.com/wp-content/uploads/image.jpg est en panne, mais http://www.example.com/wordpress/wp-content/uploads/image.jpg fonctionne. Je veux que ce soit l’inverse, ou je veux que les deux voies fonctionnent.

<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>

J'ai essayé d'ajouter différentes lignes à différents fichiers HTACCESS mais aucune n'a fonctionné. Je ne suis pas non plus sûr du numéro de ligne où la nouvelle règle doit être insérée. Une de mes nouvelles règles est peut-être correcte, mais au mauvais endroit. En voici un dont je pensais vraiment qu'il fonctionnerait, mais qui n'a pas fonctionné.

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


P粉917406009P粉917406009314 Il y a quelques jours863

répondre à tous(1)je répondrai

  • P粉930448030

    P粉9304480302024-01-03 12:56:22

    Vous devez d'abord tout supprimer .htaccess 文件,只保留根目录中的一个:public_html/.htaccess

    Deuxièmement, votre dernière règle ne fonctionne pas car elle est légèrement fausse.

    Vous devriez le remplacer par :

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

    À :

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

    Parce que vous n'avez pas besoin d'un /,也不需要301重定向。您希望隐藏 wordpress 文件夹,并将请求的网址从 wp-content/(.*) 映射到 wordpress/wp-content/code>

    de départ

    De plus, cette règle doit être la première règle du fichier .htaccess, ayant priorité sur les règles WordPress par défaut suivantes. À partir de public_html/ 的最终且唯一 .htaccess, cela devrait ressembler à ceci :

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

    J'espère que cela vous aidera.

    répondre
    0
  • Annulerrépondre