url重写不适用于相对路径

Ama*_*ngh 3 apache .htaccess mod-rewrite

我是一个重写url的新手,我已经重写了我的网址,但它导致了页面中使用的所有相对路径的问题,如

<link href="style/style.css" rel="stylesheet">
<link href="images/icon.png" type="images/ico" rel="icon" />
<img src="images/test.png" id="test">
Run Code Online (Sandbox Code Playgroud)

即使我已经为他们应用了以下重写规则,但我仍然在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/
Run Code Online (Sandbox Code Playgroud)

我的控制台截图 这是控制台截图

我甚至已经将我的重写规则调试到htaccess测试程序中,并根据需要在那里工作

Jon*_*Lin 5

您的链接都是相关链接."images/icon.png"而不是"/images/icon.png".因为您的网址已更改其网址基础:

/viewRestuarant.php
Base: /
Run Code Online (Sandbox Code Playgroud)

/raipur/something/1234
Base: /raipur/something/
Run Code Online (Sandbox Code Playgroud)

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

<base href="/" />
Run Code Online (Sandbox Code Playgroud)