面包屑链接无法正常工作
好吧,我有这段代码 -
function breadcrumbs($separator = ' » ', $home = 'Home') {
$path = array_filter(explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)));
$base = ($_SERVER['HTTPS'] ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . '/';
$breadcrumbs = Array("<a href=\"$base\">$home</a>");
foreach ($path AS $x => $crumb) {
$title = ucwords(str_replace(Array('.php', '_', '-'), Array('', ' ', ' '), $crumb));
$breadcrumbs[] = "<a href=\"$base$crumb\">$title</a>";
}
return implode($separator, $breadcrumbs);
}
假设我位于以下页面网址:
http://www.mysite.com/forums/general/log-book
此函数将面包屑正确显示为 首页 » 论坛 » 一般 » 日志
。
但是,当我单击其中一个面包屑链接时,它只会返回到基本站点 URL 结构 - 例如“常规”会返回到 http://www.mysite.com/general
实际上应该去
http://www.mysite.com/forums/general
你们建议我如何解决这个问题?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
请尝试以下操作:
注意更改后的行
$base = $base.$crumb.'/';
Try this instead:
Note the changed line
$base = $base.$crumb.'/';
鉴于您的
$path
数组如下所示:您可以向后遍历它:
注意 1:不要依赖
HTTP_HOST
。请改用SERVER_NAME
。前者可以使用 HTTP 请求的Host: ...
字段进行伪造。注 2:我是 Yoda 条件句的粉丝。
Given your
$path
array looks like:You might traverse it backwards:
Note 1: Don't rely on
HTTP_HOST
. UseSERVER_NAME
instead. The former can be forged using the HTTP request'sHost: ...
field.Note 2: I'm a fan of Yoda conditionals.