【问题标题】:HREF="" automatically adds to current page URL (in PHP). Can't figure it outHREF="" 自动添加到当前页面 URL(在 PHP 中)。想不通
【发布时间】:2012-02-04 13:31:17
【问题描述】:

stackoverflow 的长期读者,但第一个问题。

我在 custom_functions.php 文件中使用 Wordpress(特别是论文主题),我发现由于某种原因会自动添加当前页面 url。例如这段代码是查询数据库,然后循环输出每个产品在它自己的 div 中:

$result = db_connection($query);
while ($row = mysql_fetch_array($result)) { ?>
    <div class="box"><a href="">
        <img src="http://www.electricbikehub.co.nz<?php echo $row['product_root_directory']         . $row['mid_size_image'] ?>">
        <h2><?php echo $row['name']?></h2>
        <p><?php echo $row['description_brief'];?></p>
        <p><span class="multiple_product_red"><span class="multiple_product_linethrough">RRP: <?php echo $row['list_price']; ?>.</span> Our discounted price: <?php echo $row['our_price']; ?>. Includes delivery and GST.</span></p>
        </a>
    </div>
<?php } ?>

如您所见,第 3 行显示 href="" 但生成的实际链接是当前页面(在本例中为“http://www.electricbikehub.co.nz/?page_id=1192”)。如果我在 href 中添加任何内容,例如 href="something" 它只会将其添加到末尾,即http://www.electricbikehub.co.nz/?page_id=1192something

任何帮助将不胜感激!

【问题讨论】:

  • 如果你把一个完整的 url 放在以 http 开头的 href 中,比如something.com,它会做同样的事情吗?
  • 听起来不太对劲。图片或它没有发生。
  • 我不太明白你的问题......你想在 href 属性中做什么
  • 感谢 wescrow,我想我明白了。正如我在下面所说,如果我做了 href="www.google.com" 它只会将它附加到根域名的末尾(即 www.electricbikehub.co.nz/www.google.com)。但是,如果我添加了“http://”就可以了。那是我的问题...

标签: php html


【解决方案1】:

e我也有同样的问题,就像之前的其他答案一样,但是当我尝试使用它时,它仍然会向 URL 添加越来越多的内容。所以我在我的代码中添加了一些东西。

从此:

<a href="//<?= $_SERVER['HTTP_HOST'] ?>something/about">about</a>

到:

<a href="///<?= $_SERVER['HTTP_HOST'] ?>something/about">about</a>

如果您注意到我在 href="///" 上添加了一个反斜杠“/”,而不仅仅是使用两个反斜杠

【讨论】:

    【解决方案2】:

    无论您是在本地服务器上还是现场开发,一个可行的解决方案是 在链接前添加“//”。这将有效地删除您当前所在网站的 URL。

    示例:

    <a href="www.google.com">Google.com</a>
    

    这将在输出http://localhost/mySite/currentPage/www.google.com

    你应该做的是:

    <a href="//www.google.com">Google.com</a>
    

    这将输出www.google.com

    【讨论】:

    • 我收到about:blank#blocked
    【解决方案3】:

    你可以在 href 中把 // 放在 $yourUrl 前面:

    <a href="//<?=$yourUrl?>"></a>
    

    【讨论】:

    • "//" 表示文件。它会将 url 视为文件 url。
    【解决方案4】:

    您确实意识到这是默认行为,对吧?如果添加 /something,结果会有所不同。

    你可以做很多事情来防止默认行为。

    href="#":

    除了锚点什么都不做——不是最好的解决方案,因为它可能会跳转到页面顶部。

    <a href="#">
    

    href="javascript:void(0);"

    什么都不做,完全合法。

    <a href="javascript:void(0);"></a>
    

    href="your-actual-intended-link"最佳

    显然是最好的。

    <a href="<your-actual-intended-link>"></a>
    

    如果您不希望 a 标记出现在某个地方,为什么还要使用 a 标记?

    【讨论】:

    • 解决方案 href="javascript:void(0);"为我做了伎俩。谢谢!
    • 如果您使用的是 MVC 范例,使用 ' href="#" ' 会将您踢出站点根目录。
    【解决方案5】:

    在url前面加上http://

    不正确

    <a href="www.example.com">www.example.com</span></p>
    

    正确

    <a href="http://www.example.com">www.example.com</span></p>
    

    【讨论】:

    • 为什么即使正确的 URL 是 https://www.example.com,而不是 http://www.example.com,此解决方案仍然有效?
    • 一个不会强制使用特定架构的更不可知的值是//www.example.com。现在一切都应该使用 TLS,但你永远不会知道,它可以在开发环境中用于灵活性,而无需设置证书。
    【解决方案6】:

    如果你想将它重定向到其他一些 url,让 google.com 然后让你喜欢 happy to help other says rikin&lt;a href="//google.com"&gt;happy to help other says rikin&lt;/a&gt; 这将从 href 中删除自己的网站 url。

    【讨论】:

      【解决方案7】:

      使用这个:

      <a href="<?php echo(($_SERVER['HTTPS'] ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]); ?>">Whatever</a>
      

      它将使用当前 URL 创建一个 HREF...

      【讨论】:

      • 我会非常小心地使用它,除非你强制使用 .htaccess 或 PHP(代码注入)重写路径。此外,您应该在开头包含($_SERVER['HTTPS'] ? 'https://' : 'http://').,因为$_SERVER['SERVER_NAME'] 只返回www.somedomain.com(请参阅$_SERVER documentation
      • 确实,但是如果他有一个HTTP网站,他只需要在PHP代码前包含HTTP://或HTTPS://...协议不会经常更改!
      • 不,但是当它出现时,如果您包含该代码,他将不必找到每个并手动更改它(并且每个链接的重定向会增加页面加载时间)。不管怎样,至少在你的回答中提到 http(s?):// 是一个好主意,并注意转义 $_SERVER['REQUEST_URI'] 是必要的。
      【解决方案8】:

      这是浏览器解释和清空href的方式。它假定您要链接回您所在的页面。这与您未将操作分配给 &lt;form&gt; 元素相同。

      如果您在 href 中添加任何单词,它会将其附加到当前页面,除非您:

      • 在它的前面添加一个斜杠/,告诉它附加到您的基本网址,例如http://www.whatever.com/something
      • 添加 # 符号,在这种情况下,它是页内锚点
      • 或有效的网址

      编辑:建议我添加一个链接以帮助澄清情况。我发现以下站点在解释锚标记的 href 属性以及它如何解释 URL 路径方面做得非常好。它不是令人难以置信的技术性和人类可读性。它通过大量示例来说明路径类型之间的差异:http://www.mediacollege.com/internet/html/hyperlinks.html

      【讨论】:

      • 是的,提问者意识到了这一点。这是他们询问的非空 href。
      • 不确定提问者是否意识到这一点。看起来霍布斯不知道为什么一个空的href在做任何事情。或者为什么非相对或绝对的“某事”正在做它正在做的事情。我认为 wescrows 的回应有助于澄清。也许不是完整的,但仍然是其中一部分的一个很好的解释。
      • 添加了更多信息以更好地回答 OP 的问题。
      • 感谢 wescrow!我认为这解释了我做错了什么。令我困惑的是,如果我输入: 它会将其附加到我的根域,因此最终会变成: www.electricbikehub.co.nz/www.google.com 但是如果我输入 google.com”> 就好了……我不敢相信我不知道它是这样工作的。这正常吗?
      • @bfrohs 我添加了一个链接,有助于更好地解释这种情况。但是,我觉得您建议的页面技术性太强,难以阅读。不过,我建议在 OP 牢牢掌握该主题后阅读它。
      【解决方案9】:

      在任何情况下,您的代码都会生成无效标记:您不应将块内容包装在链接中。标签不能这样工作。如果你想要这种效果,你应该使用 js 或在内容上方创建一个绝对定位的链接(z-index)。更多信息在这里:Make a div into a link

      您应该确保在呈现时验证您的代码:http://validator.w3.org

      猜你喜欢
      • 2014-10-03
      • 2015-01-27
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2012-02-27
      相关资源
      最近更新 更多