Maison > Questions et réponses > le corps du texte
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粉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 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.