Maison > développement back-end > tutoriel php > Comment éviter les problèmes de chargement de CSS, JS et d'images après la réécriture d'URL ?

Comment éviter les problèmes de chargement de CSS, JS et d'images après la réécriture d'URL ?

Linda Hamilton
Libérer: 2024-12-02 19:09:15
original
160 Les gens l'ont consulté

How to Prevent CSS, JS, and Image Loading Issues After URL Rewriting?

Réécriture d'URL : résolution des problèmes de chargement pour CSS, JS et images

Dans la réécriture d'URL, il est courant de rencontrer des scénarios où CSS, JS , et les fichiers image cessent de se charger après la redirection. Ce problème se produit généralement lorsque des chemins relatifs sont utilisés et que la règle de redirection modifie l'URL de base.

Pour illustrer, considérons la configuration suivante :

Options +FollowSymLinks

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteRule ^detail/([0-9]+)/?$ detail.php?id=
Copier après la connexion

Dans ce cas, la règle redirige les URL telles que « http://localhost/detail/123 » vers « http://localhost/detail.php?id=123 ». Bien que la redirection se déroule avec succès, les fichiers CSS, JS et image situés dans « http://localhost/css/ » et « http://localhost/js/ » ne se chargent pas car les chemins relatifs ne sont plus valides.

Résoudre le problème

Une solution couramment proposée consiste à remplacer les chemins relatifs par des chemins absolus, tels que "/css/" et "/js/". Cependant, cette approche nécessite des modifications manuelles de plusieurs fichiers et n'est pas considérée comme une solution fiable.

Solution alternative utilisant les règles .htaccess

Pour résoudre ce problème tout en préservant les chemins relatifs , envisagez la solution suivante :

Insérez la ligne suivante dans votre fichier .htaccess avant le Instruction RewriteRule :

RewriteBase /
Copier après la connexion

Cela garantit que l'URI de base reste "/" même après la redirection, résolvant ainsi le problème avec les chemins relatifs.

Exemple :

Avec la modification ci-dessus, le fichier .htaccess apparaît désormais comme suit :

Options +FollowSymLinks

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f [OR]

RewriteRule ^detail/([0-9]+)/?$ detail.php?id=
Copier après la connexion

Remarque : N'oubliez pas de placer la ligne "RewriteBase /" avant toute instruction RewriteRule.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal