我是重写 url 的新手,我已经重写了我的 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">
即使我已经为他们应用了以下重写规则,但我仍然在 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/
我的控制台截图
我什至将我的重写规则调试成了 htaccess tester并根据需要在那里工作
最佳答案
您的链接都是相对链接。 "images/icon.png"
而不是 "/images/icon.png"
.因为您的网址更改了其网址基础:
/viewRestuarant.php
Base: /
到
/raipur/something/1234
Base: /raipur/something/
当浏览器看到如下链接时:images/icon.png
它需要在其前面添加一个基本 URL,以便知道资源所在的位置。默认情况下,它根据在地址栏中看到的 URL 使用主机和基础。由于这显然不是这些资源中的任何一个,因此您需要将链接设为绝对 URL,例如:/images/icon.png
或 http://example.com/images/icon.png
或将显式相对 URL 基添加到页面标题中(在 <head> </head>
标记之间):
<base href="/" />
关于apache - url 重写不适用于相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658441/