****编辑:在此解决Relative paths from file for img, a and header ****
网页设计有点新鲜。
我刚刚创建了一个动态网站。它可以读取域/类别,域/类别/ this-article-about-x,全部重定向到domain / index.php并且运行良好。
然而,我很快就知道每当我使用相对路径如./include时,相对路径考虑了当前的URL,而不是php文件所在的实际URL。
我有两个问题,我长时间浏览互联网时无法回答:
1)如果domain / index.php尝试使用./thumbnails/science/image.jpg显示图像,如果实际网址是domain / category /,它将无效,但如果它只是域/类别(最后没有斜线)。为什么这种不一致? HTML代码显示图像的src在两种情况下都是相同的。
2)我的标题有一个带有类别的下拉菜单。一旦提交,它将调用自己(header.php),查看用户选择的类别并重定向到域/类别。一切顺利。然后,您可以将下拉菜单重新更改为另一个类别,然后再次加载所有内容。但同样,如果您直接访问domain / cateory /(最后使用斜杠),CSS将无法加载,图像将无法按问题1加载,并且提交表单将导致问题,因为它会在domain / category /上查找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更改为域/ categoryChosen)
如何为相对网址使用一致的方法,允许我在localhost上工作,然后上传到我的网站主机,而无需更改文件,这适用于通过htaccess拥有漂亮名称网址的动态网站?
谢谢,
这对我来说非常令人费解,如何从当前文件路径获取相对路径如此困难并产生许多不同的问题,以及为什么只包含语句似乎与dirname一起使用(文件)
我在其他网站上发现了这个,但是每次你想从localhost转到网上时都需要你改变基础。我试图避免这种情况。显然,必须有一种简单的方法来做一些基本的事情。我不敢相信谷歌和其他人在他们准备好生活的时候正在改变路径。
答案 0 :(得分:0)
您应该始终对媒体等公共文件使用绝对路径。如果您由于某种原因不想这样做,或者您的网站过于牵扯,则必须为其他文件类型创建重写规则,以便它们也可以从正确的路径中包含。