在我的项目中,功能就像我需要设置指向以下链接时:
/site/sales/sold.php
因此,菜单.php文件链接如下所示:
<ul>
<li><a href="sales/">Sales</a></li>
<li><a href="sold.php">Sold Items</a></li>
</ul>
它有时会直接指向
/site/sales/sold.php
下一刻,它重复菜单的目录,如下所示:
/site/sales/sales/sold.php
所以我删除了销售目录,因为它本身就在那里指导了一段时间,现在它指向
/site/sold.php
它不存在,所以它最终得到一个 404。
如果您在页面sales/
上并链接到页面sales
,则链接将导致sales/sales/
- 这是定义的行为。
避免这种情况的默认方法是通过 HTML <base>
标记指定基本 URL。这里不涉及PHP,JS或CSS——只是很好的HTML 2.0。
<base href="http://www.example.com/site/">
在您的页面标题中使用它,将定义给定的 URL 作为页面上所有链接的基础,因此像 sales/
这样的链接在点击时实际上会导致http://www.example.com/site/sales/
。
请参阅:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
你为什么不直接使用绝对链接?甚至是 URL 重写?
使用相对链接(如"已售出.php"(的唯一方法是,您的菜单仅出现在/sales 目录中。例如,如果此菜单出现在/site 的页面中,它当然不起作用,因为/site/sold.php 下可能没有一个名为"sold.php"的文件。因此,如果您不想确保,您的链接"已售出"始终指向正确的方向,请使用像/site/sales/sold.php这样的链接。那么你是在/site 内部还是在/site/sales 内部都无关紧要。
if i for example set my menu link to direct to: /site/sales/sold.php so the menu.php file link would look like this:
<li><a href="sales/">Sales</a></li>
<ul>
<li><a href="sold.php">Sold Items</a></li>
</ul>
这说不通。如果你将你的链接指向/site/sales/sold.php,你的链接看起来就像这样:<li><a href="/site/sales/sold.php">Sold Items</a></li>