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=
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 /
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=
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!