RewriteRule htaccess不显示图像

时间:2015-03-10 16:46:20

标签: php apache .htaccess mod-rewrite url-rewriting

在.htaccess文件上使用RewriteRule时,我在网站上显示图片时遇到问题。

简而言之,我有很多页面都有我要转换的GET变量。 例如:

http://example.com/home.php?page=categorie => http://example.com/categorie

http://example.com/home.php?page=categorie&act=view&lettera=A => http://example.com/categorie/A

我可以使用这个.htaccess

来做到这一点
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteRule ^categorie$ /home.php?page=categorie [L]
RewriteRule ^categorie/([^/]*)$ /home.php?page=categorie&act=view&lettera=$1 [L]

当我继续http://example.com/categorie时没有任何问题。

当我继续http://example.com/categorie/A时,看不到任何风格,js,图像。

所以,我添加这一行:

RewriteRule ^categorie/(css|img|jpeg|jpg|gif|png|js|svg)/(.*)?$ /$1/$2 [L,QSA,R=301]

当我继续http://example.com/categorie/A时,只能看到css风格。 有什么想法吗?

4 个答案:

答案 0 :(得分:1)

您只需在页面的<head>部分添加HTML:

<base href="/" />

以便从该网址解析每个相对网址,而不是当前网页的网址。

答案 1 :(得分:0)

当您直接转到/home.php?page=categorie&act=view&lettera={val}页面时,您能看到图片吗?除非图像路径被引用为categorie/A,否则它应保持不变。您不需要定义文件/图像扩展名的最后一条规则。

转到包含问题categorie/A的网页,然后在Firefox中启动firebug。翻看缺少的图像并执行检查元素来调试图像未显示的原因,也许网址会以某种方式重写。

答案 2 :(得分:0)

通过将URL重写为不同的深度,相对URL也需要更改。因此,例如,如果<img src="../images/myimage.jpg">处理/home.php?...,则src需要更改为<img src="../../images/myimage.jpg"> /category/A

最简单的选择是确保您的图片网址使用相对于根目录的路径,而不是文档,即<img src="/images/myimage.jpg">

答案 3 :(得分:0)

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z]+)$ user.php?username=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^country/([0-9a-zA-Z]+)$ country.php?countryname=$1 [L]
url1: http://domain.com/Rocky
url2: http://domain.com/country/India 
Add <base href="../"> in country.php<head>
<head>
<base href="../">
</head>