【问题标题】:Loss of format due to .htaccess由于 .htaccess 导致格式丢失
【发布时间】:2012-09-15 18:54:29
【问题描述】:

我正在为我的网页制作一个 .htaccess,代码如下:

Options -Indexes

RewriteEngine On
RewriteRule ^([A-Za-z]+)/([0-9]+)/$ files.php?row=$1&column=$2 

RewriteRule ^([A-Za-z]+)/?$ $1/1/ 

RewriteCond %{HTTP_REFERER} !^http://(www\.)?mywebpage\.at [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} ^http://.*$
RewriteRule \.(jpe?g|gif|bmp|png)$ /imgs/hotlinks.png [L] 

RewriteCond %(REQUEST_URI) ^imgs/$ [NC]
RewriteRule / - [F]

ErrorDocument 404 /404.html

ErrorDocument 403 /403.html

问题是,我的图像没有显示在具有重写 URL 的页面中。显然,他们的路线也受到重写的影响。简单解释:位于 www.mywebpage.at/imgs/pic1.jpg 的图像加载到 www.mywebpage.at/files.php?row=first&column=3,但是当我尝试输入 www.mywebpage.at/first/ 3/ 浏览器在www.mywebpage.at/first/3/imgs/pic1.jpg中查找图片,显然加载失败。

如何解决这个问题,以使图像的路径不会改变,无论我在哪里使用它们?

【问题讨论】:

  • 使链接静态化。将您的域名放在每个网址的前面:http://website.com/img/pic1.jpg
  • @Rune 毫无疑问,这会起作用,但我正在寻找一个更优雅的解决方案。

标签: html apache .htaccess webserver


【解决方案1】:

你可以这样做:

RewriteCond $1 !^(imgs)
RewriteRule ^([A-Za-z]+)/([0-9]+)/$ files.php?row=$1&column=$2 

这将重写除 imgs 文件夹之外的所有内容。

编辑:抱歉,误读了问题。

使您的图像路径成为绝对路径。例如。相对路径是:

imgs/image1.jpg

绝对路径是:

/imgs/image1.jpg

开头的斜线告诉它去网站的最根目录,然后去 imgs,然后是 image1.jpg。

【讨论】:

  • 这不是问题。我需要的是一种告诉服务器从域的根目录而不是从重写的 URL 查找图像文件夹的方法
  • 效果很好。但是,我想我将使用 标记,只是为了避免通过我的所有代码检查每个链接。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
相关资源
最近更新 更多