HREF =“”自动添加到当前页面URL(在PHP中)。无法弄清楚

时间:2012-01-06 20:48:28

标签: php html

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

我正在使用custom_functions.php文件中的Wordpress(特别是论文主题),我发现由于某种原因自动添加当前页面网址。例如,此代码用于查询数据库,然后循环输出其自己的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

非常感谢任何帮助!

9 个答案:

答案 0 :(得分:39)

这是浏览器解释和清空href的方式。它假设您想要链接回您所在的页面。这与您不为<form>元素分配操作的情况相同。

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

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

编辑:有人建议我添加一个链接以帮助澄清情况。我发现以下网站我认为非常好解释锚标记的href属性以及它如何解释URL路径。它不是非常技术性和非常人性化的。它使用大量示例来说明路径类型之间的差异:http://www.mediacollege.com/internet/html/hyperlinks.html

答案 1 :(得分:16)

在网址前面添加http://

不正确的

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

正确

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

答案 2 :(得分:5)

如果您想将其重定向到其他网址,请google.com然后将其设为     happy to help other says rikin <a href="//google.com">happy to help other says rikin</a>  这将从href中删除自我网站网址。

答案 3 :(得分:1)

你确实意识到这是默认行为,对吧?如果你添加/某些东西,结果会有所不同。

你可以做很多事情来防止违约行为。

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代码?

答案 4 :(得分:0)

您可以将// //放在href中$ yourUrl的前面:

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

答案 5 :(得分:0)

无论您是在本地服务器上开发还是在线开发,一种有效的解决方案是 在链接前面添加“ //”。这将有效地删除您当前所在站点的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

答案 6 :(得分:0)

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

从此:

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

到:

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

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

答案 7 :(得分:-2)

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

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

答案 8 :(得分:-4)

使用此:

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

它将使用当前URL ...

创建HREF