重写css / js路径

时间:2010-04-05 14:49:58

标签: .htaccess mod-rewrite

所以我使用mod_rewrite规则重写了我的路径:URL/really/nice/paths/

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [PT,L]
</IfModule>

问题是如何重写js / css / image文件的路径,所以当URL/really/nice/path/URL/scripts/请求来自URL/styles/的相对路径时而是,{,{1}}和URL/images/文件夹?这可以在不使用RewriteBase的情况下完成吗?

1 个答案:

答案 0 :(得分:11)

重写URL时,客户端不知道它。因此,当客户在URL“example.com/some/url/”查看页面并且页面引用“images / image.jpg”中的图像时,客户端在“example.com/some/”中查找图像url / images / image.jpg“即使该页面实际上位于”example.com/some/other/url/“中。那是你面临的问题,对吗?

这个问题有三个主要解决方案:

  1. 使用资源的绝对路径而不是相对路径。
  2. 使用<base>标记确保客户端知道构建其相对URL的根与页面的明显URL不同。
  3. 在重写规则中为“some / url / images /”添加新规则。
  4. 选项1可能是最好的主意,你会发现大多数使用URL重写的网站都使用它,包括Stack Overflow本身。选项2不赞成,但工作并且相对容易。选项3是最难维护的,因为在您定义新规则时,URL重写异常和特殊情况可能会出现。

    最易维护的解决方案是使用绝对URL。