我一定是做错了什么,因为无论我如何尝试或用谷歌搜索,我都找不到答案:(
所以,我想要一个类似 http://localhost/BLUEPRINT/list/857 的 url 像这样实际加载一个完美工作的网址:http://localhost/BLUEPRINT/list.php?lid=857
我可以在 .htaccess 文件中写入重写规则,并且可以读取 lid 变量。问题是 list.php 中的所有路径都是相对的。 Css、图片、javascript 等因此,当 SEO 友好的 url 加载时,所有这些项目都会在 BLUEPRINT/list/857/... 中查看
例如:<img src="images/logo.png" />
在请求 seo 友好的 url 时实际上是这样的:<img src="list/857/images/logo.png" />
那我该怎么办呢?
我可能会尝试将页面中的所有路径转换为根相对路径(例如“/BLUEPRINT/images/logo.png”)而不是相对路径。但是页面中有几十个,即使我这样做,它们也不会在实际服务器上工作,因为它应该是“/images”而不是“/BLUEPRINT/images”。所以我不能只将我的文件上传到实际的服务器。
我有哪些选择?所有这些很棒的脚本,如 wordpress、joomla 等,是如何实现的?处理这个问题?我到底做错了什么?这让我发疯!
最佳答案
您的新网址没有相同的基本路径前缀。这意味着相对 URL 路径的解析方式不同。引用 images/logo.png
现在解析为 /BLUEPRINT/list/images/logo.png
而不是 /BLUEPRINT/images/logo.png
.
要解决此问题,请在您的引用中使用绝对 URL 路径,例如:
<img src="/BLUEPRINT/images/logo.png" />
或者,如果您不想将基本 URL 路径 /BLUEPRINT/
添加到所有引用元素,请将基本 URL 设置为 base
:
<base href="/BLUEPRINT/" />
现在,相对 URL 路径是从此基本 URL 而不是当前 URL 解析的。但请注意,更改基本 URL 会影响所有 相对 URL。
关于url - 菜鸟关于 mod 重写和相对 url 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2335171/