URL重写:解决CSS、JS、图片的加载问题
URL重写中,经常会遇到CSS、JS的加载场景,并且图像文件在重定向后停止加载。当使用相对路径并且重定向规则修改基本 URL 时,通常会出现此问题。
为了说明这一点,请考虑以下配置:
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^detail/([0-9]+)/?$ detail.php?id=
在这种情况下,规则重定向 URL,例如“http://localhost/detail/123”到“http://localhost/detail.php?id=123”。虽然重定向成功,但位于“http://localhost/css/”和“http://localhost/js/”中的 CSS、JS 和图像文件无法加载,因为相对路径不再有效。
解决问题
一种常见的解决方案是将相对路径更改为绝对路径,例如“/css/”和“/js/”。但是,这种方法需要手动编辑多个文件,因此不被认为是可靠的解决方案。
使用 .htaccess 规则的替代解决方案
在保留相对路径的同时解决此问题,请考虑以下解决方案:
在 .htaccess 文件中插入以下行在 RewriteRule 语句之前:
RewriteBase /
这可确保即使在重定向后基本 URI 仍保留“/”,从而解决相对路径的问题。
示例:
经过上述修改,现在出现 .htaccess 文件如下:
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^detail/([0-9]+)/?$ detail.php?id=
注意:请记住将“RewriteBase /”行放在任何 RewriteRule 语句之前。
以上是如何防止URL重写后CSS、JS、图片加载问题?的详细内容。更多信息请关注PHP中文网其他相关文章!