链接到另一个站点从主站点开始

时间:2014-09-20 18:13:52

标签: html

你知道如何解决下一个问题吗? 为此,请访问http://11klassniki.ru/school_post.php?id_school=2639并点击链接Официальныйсайт:tsarevo-zaimishe-sosh.edusite.ru,您将转移到http://11klassniki.ru/tsarevo-zaimishe-sosh.edusite.ru。 我不知道为什么,但链接从主站点开始。

如果我要更改数据库中的链接并添加“http://”,我没有引起任何问题。

当然,我可以在下一段代码中添加“http://”:

if (!empty($myrow_vuz ['site'])) {
printf ("<p class='town'>Official site: <span class='town_name'>
<noindex><a href='%s' target = '_blank' rel='nofollow'>%s</a></noindex></span></p>"
, $myrow_vuz["site"], $myrow_vuz["site"]);
}

但我在数据库中有许多链接,从http已经开始。

4 个答案:

答案 0 :(得分:0)

如果href不包含协议,例如http://,则假定它是相对路径。我们的想法是,您可以拥有/logout的链接,而无需引用主机名。当您在没有协议的情况下链接到tsarevo-zaimishe-sosh.edusite.ru时,它仍然被解释为相对链接。

因此,鉴于您必须在链接中包含http://,您可以通过数据库整理那些拥有它的数据库,也可以编写显示代码以便检查{{1}已经存在并且如果不存在则添加它。

答案 1 :(得分:0)

我相信你回答了自己的问题。如果您可以添加http://并解决问题,那么为什么不这样做呢?

答案 2 :(得分:0)

您的评估是正确的,您应该将http://添加到链接的开头,否则它将被视为相对而非绝对。

由于您使用的是PHP,因此您可以轻松检查您的链接是否确实以http://开头,如果没有,则将其添加到链接中!

检查How to check if a string starts with a specified string?,了解如何检查字符串是否以http://开头,并将其添加到.(点)运算符之前。祝你好运!

答案 3 :(得分:0)

您可以运行preg_match来检查http://或https://的实例,并在它们不存在时添加它们。但是,仍然建议您将解决方案清理为始终在所有已保存链接的开头包含http://。

$site = "http://mywebsite.com";
// For replacement of your code, you may remove the line above and uncomment the one below.
//$site = $myrow_vuz ['site'];

if (! empty ( $site )) {
    $site = (preg_match ( "/(^http:\/\/)|(^https:\/\/)/", $site )) ? $site : "http://" . $site;
    printf ( "<p class='town'>Official site: <span class='town_name'><noindex><a href='%s' target = '_blank' rel='nofollow'>%s</a></noindex></span></p>", $site, $site );
}