重写一个图像的规则

时间:2012-12-28 16:42:34

标签: php apache .htaccess mod-rewrite

我有一个.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重写规则严格修复此问题吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:1)

更简单的解决方案是根据站点的根文件夹在html中使用src作为img-element。 (如果它仅适用于那一张图片......)

例如: http://www.site.com

<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="/">

或者您只需将所有相对网址更改为绝对网址即可。