url重写不适用于相对路径

时间:2015-04-15 18:50:58

标签: apache .htaccess mod-rewrite

我是重写网址的新手,我已经重写了我的网址,但这会导致网页中使用的所有相对路径出现问题,如

<link href="style/style.css" rel="stylesheet">
<link href="images/icon.png" type="images/ico" rel="icon" />
<img src="images/test.png" id="test">

即使我已经为他们应用了以下重写规则,但我仍然在firebug控制台中找到404错误(第一个正在运行,但第二个不适用于relatvie)

RewriteEngine On
RewriteRule ^raipur/([A-Za-z0-9-]+)/([0-9]+)$ /viewRestaurant.php?raipur=$1&id=$2
RewriteRule ^raipur/([A-Za-z0-9-]+)/([A-za-z]+)/ /$2/

我的控制台截图 this is console screenshot

我甚至将我的重写规则调试到htaccess tester,并根据需要在那里工作

1 个答案:

答案 0 :(得分:5)

您的链接都是相关链接。 "images/icon.png"代替"/images/icon.png"。因为您的网址已更改其网址:

/viewRestuarant.php
Base: /

/raipur/something/1234
Base: /raipur/something/

当浏览器看到如下链接:images/icon.png时,它需要在其前面添加一个基本URL,以便知道资源的位置。默认情况下,它使用主机和基于它在位置栏中看到的URL。由于这显然不是这些资源中的任何一个,您需要将链接设置为绝对网址,例如:/images/icon.pnghttp://example.com/images/icon.png,或者将明确的相对网址添加到您网页的标题(在<head> </head>标记之间):

<base href="/" />