0

我有一个 .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,但现在有路径 categories/images/foo.png

我可以用 .htaccess 重写规则严格解决这个问题吗?如果是这样,怎么做?

4

3 回答 3

1

一个更简单的解决方案是根据站点的根文件夹在 html 中为 img 元素使用 src。(如果只是为了那一张图片......)

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

<img src="/images/header.jpeg" />

这将始终引用http://www.site.com/images/header.jpeg,无论您在哪个文件夹中。

于 2012-12-28T17:00:51.763 回答
0

This should take any request for the image and rewrite it to go the root /images/foo.png:

RewriteRule ^.*/images/foo.png$ /images/foo.png

Note that if you have a different image located at somewhere/images/foo.png, requests for that will also be rewritten to /images/foo.png, unless you write specific exceptions for it.

于 2012-12-28T16:48:14.503 回答
0

这听起来像是相对 URL 与绝对 URL 的混淆。当您有像http://domain.com/category/post/name相对 URI 基础这样的路径时/category/post,在网络服务器返回的内容中提供的所有相对链接都将由浏览器预先添加。为了告诉浏览器真正的URI 基础是什么,您可以将其包含在您的标头中:

<base href="/">

或者您可以简单地将所有相对 URL 更改为绝对 URL。

于 2012-12-28T17:30:31.980 回答