所以我使用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
的情况下完成吗?
答案 0 :(得分:11)
重写URL时,客户端不知道它。因此,当客户在URL“example.com/some/url/”查看页面并且页面引用“images / image.jpg”中的图像时,客户端在“example.com/some/”中查找图像url / images / image.jpg“即使该页面实际上位于”example.com/some/other/url/“中。那是你面临的问题,对吗?
这个问题有三个主要解决方案:
<base>
标记确保客户端知道构建其相对URL的根与页面的明显URL不同。选项1可能是最好的主意,你会发现大多数使用URL重写的网站都使用它,包括Stack Overflow本身。选项2不赞成,但工作并且相对容易。选项3是最难维护的,因为在您定义新规则时,URL重写异常和特殊情况可能会出现。
最易维护的解决方案是使用绝对URL。