url - 菜鸟关于 mod 重写和相对 url 的问题

标签 url mod-rewrite seo

我一定是做错了什么,因为无论我如何尝试或用谷歌搜索,我都找不到答案:(

所以,我想要一个类似 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/

相关文章:

apache - 重写条件以从智能手机检查移动用户代理

apache - 解释htaccess规则?

seo - 对重复内容使用标签 rel=canonical

javascript - 如何从元素中获取单词内容并将其附加到 href 的 URL 末尾?

python - 清理用户输入以包含在 href 属性中?

url - 可以在查询字符串之前跳过斜杠吗?

.htaccess - 如何在 Heroku Cedar 堆栈上使用 .htaccess 重定向到 HTTPS

google-analytics - analytics.js 在开始加载之前有延迟?

.htaccess - seo url 重写规则 - 使最后一个参数可选

ruby-on-rails - 不区分大小写的用户名 URL