【问题标题】:Paths relative to the file location and NOT the url相对于文件位置而不是 url 的路径
【发布时间】:2012-07-26 16:16:49
【问题描述】:

**** 编辑:已解决Relative paths from file for img, a and header ****

对网页设计有点新意。

我刚刚创建了一个动态网站。它可以读取domain/category,domain/category/this-article-about-x,都重定向到domain/index.php并且运行良好。

但是,我很快了解到,每当我使用 ./include 等相对路径时,相对路径都会考虑当前 URL,而不是 php 文件所在的实际 url。

我有2个问题长时间浏览互联网时无法回答:

1) 如果 domain/index.php 试图显示带有 ./thumbnails/science/image.jpg 的图像,如果实际 url 是 domain/category/,它将无法工作,但如果它只是域/类别(末尾没有斜线)。为什么会出现这种不一致? HTML 代码显示图像的 src 在两种情况下都是相同的。

2) 我的标题有一个带有类别的下拉菜单。一旦提交,它将调用自己(header.php),查看用户选择的类别并重定向到域/类别。一切正常。然后,您可以将下拉菜单重新更改为另一个类别,然后再次加载所有内容。但是同样,如果您直接访问 domain/cateory/ (末尾带有斜杠),CSS 将不会加载,图像不会像问题 1 中所说的那样加载,并且提交表单会导致问题,因为它会在 domain/category/ 上查找 header.php,而不仅仅是在 header.php 文件实际所在的域上。

我已成功使用 dirname(FILE) 来确保我包含所有工作(就我的测试而言,没有错误)。但我无法使用 dirname(FILE) 生成链接或图像“img src=”,无论 URL 是什么,它们都将始终指向图像。

在本地主机上,HTML 以 img src=c:\path\htdocs\thumbnails\img 的形式出现,这是正确的,但无论如何图像都不会显示。与“a href”链接相同。尝试使用 dirname(FILE) 创建链接在 localhost 上创建为 c:\correctpath 的链接,但单击它们完全没有任何效果。此外,使用带有 dirname(FILE) 的标头来处理来自下拉菜单的重定向导致它也停止工作(但如果我使用 ./ . dropDownMenuValue,它会再次正确地将 url 更改为域/categoryChosen)

如何对相对 url 使用一致的方法,允许我在 localhost 上工作,然后上传到我的 web 主机,而无需更改文件,并且适用于通过 htaccess 具有漂亮名称 url 的动态网站?

谢谢,

这对我来说非常令人费解,如何从当前文件路径获取相对路径如此困难并产生如此多不同的问题,以及为什么仅包含语句似乎与 dirname(FILE)

编辑:http://board.phpbuilder.com/showthread.php?10374336-RESOLVED-mod_rewrite-for-SEO-Friendly-URLs-and-relative-path-issue-fixes

我在其他网站上找到了这个,但是每次你想从本地主机转到网络时,它都需要你更改基础。我试图避免这种情况。显然,必须有一种简单的方法来做如此基本的事情。我不敢相信谷歌和其他所有人在准备好让某些东西上线时都在改变路径。

【问题讨论】:

  • 你在标题中找到了一个关键词。您应该在 SO 上搜索绝对 URL 和相对 URL。
  • 我做了,但我发现的每个链接都说使用 ./ 中的相对 url,这不适用于具有漂亮 url 的动态网站。我正在寻找解决方案,特别是在处理 IMG、A HREF 和 Header 时使用基于 htaccess 的漂亮 url 的相对路径。
  • 对于动态网站,您应该将cssjsimages等的所有文件夹放在Web根目录中,这样您就可以使用@等绝对URL访问所有内容987654326@、/js/images
  • phpmycoder 不起作用,这是我的观点。如果您通过 root/categories/ 访问该站点,一个简单的 将中断(但如果您不添加斜杠最后,我也很想得到答案)
  • css文件夹的绝对路径是什么?

标签: html dynamic friendly-url


【解决方案1】:

对于媒体等公共文件,您应该始终使用绝对路径。如果您出于某种原因不想这样做,或者您的网站此时过于复杂,则必须为其他文件类型创建重写规则,以便它们也可以从正确的路径中包含。

【讨论】:

  • 当您遇到这种情况时如何制定重写规则:1)根目录下的 Index.php 处理页面上的所有 'img src' 2)如果您访问根目录,它可以工作,但是如果您访问根目录/category/article,它不会再次工作,因为相对路径将来自 root/category/article 而不仅仅是 root 你是说我应该为图像重写 /category/ 和 /category 文章的规则,是吗?然后还有表单,PHP 标头不能与 dirname(FILE) 一起使用怎么办?
  • 使用相对路径的重定向比较复杂; dirname(__FILE__) 可能类似于 /srv/http/path/to/website/ 所以这根本行不通。至于img src,它会尊重重写规则;这与直接访问图像 URL 相同。不要使用相对路径!他们是邪恶的。
  • 为什么相对路径是邪恶的?此外,重定向似乎并不是一个真正的选择。我可以有一个重定向域/类别/文章的规则,但我的问题是,根据您访问站点的位置,我将 url 写为域/类别/类别再次/某事。我的整个问题就是这个。
  • 您现在正在体验为什么相对路径是邪恶的,不是吗?
  • 我遇到了来自 URL 的相对路径。如果我真的从文件中写了一个相对路径,它们会很好
猜你喜欢
  • 1970-01-01
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2021-04-12
  • 2016-11-23
  • 1970-01-01
  • 2015-09-08
相关资源
最近更新 更多