apache - url 重写不适用于相对路径

标签 apache .htaccess mod-rewrite

我是重写 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/

我的控制台截图 this is console screenshot

我什至将我的重写规则调试成了 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.pnghttp://example.com/images/icon.png或将显式相对 URL 基添加到页面标题中(在 <head> </head> 标记之间):

<base href="/" />

关于apache - url 重写不适用于相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658441/

相关文章:

php - header ("location") 导致 [500] 内部服务器错误?

javascript - Microsoft 认知服务 JavaScript 请求 'Access-Control-Allow-Origin'

PHP/Apache : Rewrite rules with . htaccess

php - 有没有一种简单的方法可以在 codeigniter 上创建子域?

codeigniter - 在 codeigniter 文件夹中添加 .htaccess 后,localhost 重定向到 www.domains.tld

regex - .htaccess 重写问题

django - 如何从 Apache 读取环境变量从 Django 1.6.5 更新到 1.7

spring - 8080 端口已在 eclipse 中使用

Eclipse Map and Reduce 插件和 Hadoop 教程

regex - (递归).htaccess 文件的正则表达式