Réécriture d'URL : résolution des échecs de chargement des CSS, JS et images
Lors de la mise en œuvre des règles de réécriture d'URL dans .htaccess, un problème courant survient où les actifs externes tels que CSS, JS et les images ne se chargent pas correctement. Cela peut être attribué au changement de base d'URI lorsque la redirection se produit.
Une première solution consiste à utiliser des chemins absolus, ce qui garantit que les actifs sont localisés quelle que soit l'URL de la page. Cependant, cela nécessite des modifications fastidieuses de tous les fichiers, ce qui en fait une solution peu fiable.
Une approche alternative exploite les règles .htaccess pour établir un URI de base cohérent :
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^detail/([0-9]+)/?$ detail.php?id= RewriteEngine On RewriteCond %{REQUEST_URI} !^/css/ RewriteCond %{REQUEST_URI} !^/js/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /detail/123/ [R=307,L]
Cette règle garantit que tous les actifs externes sont référencés à partir de l’URL /detail/123/. L'indicateur [R=307,L] redirige la requête vers l'URI de base correct (/detail/123/), résolvant efficacement le problème de chargement des actifs sans nécessiter de chemins absolus.
En conjonction avec cela, vous pouvez ajouter une
<base href="/detail/123/">
Cela solidifie davantage l'URI de base et permet aux chemins relatifs de fonctionner correctement. En mettant en œuvre ces règles, vous pouvez maintenir la réécriture d'URL tout en évitant d'avoir à modifier des fichiers individuels, garantissant ainsi une expérience utilisateur transparente.
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!