Ajoutez un sous-répertoire à l'URL WP-CONTENT à l'aide de HTACCESS dans le multisite WordPress
P粉917406009
P粉917406009 2024-01-02 13:50:59
0
1
812

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 :

  • http://www.example.com (principal)
  • http://dev.example.com (mineur)

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粉917406009
P粉917406009

répondre à tous(1)
P粉930448030

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!