在.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风格。 有什么想法吗?
答案 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>