2

**** 编辑:在此处解决img、a 和标题文件的相对路径****

对网页设计有点新意。

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

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

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

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

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

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

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

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

谢谢,

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

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

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

4

1 回答 1

0

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

于 2012-07-28T00:20:16.060 回答