我有一个.htaccess文件,内容如下:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
index.php上应该始终显示一个图像,但是当我导航到重写的路径时,图像的请求将以该路径为前缀。所以“类别”部分,虽然它仍然应该在images / foo.png显示我的foo.png现在有路径类别/ images / foo.png
我可以使用.htaccess重写规则严格修复此问题吗?如果是这样,怎么样?
答案 0 :(得分:1)
更简单的解决方案是根据站点的根文件夹在html中使用src作为img-element。 (如果它仅适用于那一张图片......)
<img src="/images/header.jpeg" />
无论您在哪个文件夹,这都会引用http://www.site.com/images/header.jpeg。
答案 1 :(得分:0)
这应该接受对图像的任何请求并将其重写为根目录/images/foo.png:
RewriteRule ^.*/images/foo.png$ /images/foo.png
请注意,如果您在/ images / foo.png某处找到了不同的图片,那么对此请求也会被重写为/images/foo.png,除非您为其编写特定的例外情况。
答案 2 :(得分:0)
这听起来像是相对vs绝对URL混淆。当您拥有http://domain.com/category/post/name
之类的路径时,相对URI基数为/category/post
,并且在Web服务器返回的内容中提供的所有相关链接都将由浏览器预先添加。为了告诉浏览器真正的 URI基础是什么,您可以将其包含在标题中:
<base href="/">
或者您只需将所有相对网址更改为绝对网址即可。