【问题标题】:Yii Appending base Url to hrefYii 将基本 URL 附加到 href
【发布时间】:2014-03-14 15:05:06
【问题描述】:

我的网页上有外部链接:

<a target="_blank" rel="nofollow" href=<?php echo $r['url'] ;?>>
                                                VISIT STORE
                                               </a>

当 $r['url'] 有 http:// 时,它会显示正确的外部 url,但当它只有 www 或只有带有域的网站名称时,它会附加网页的 url。

    Case 1 : url = http://google.com    Works fine
    Case 2:  url = www.google.com      creates a link as: http://localhost/appname/controller/action/www.google.com

【问题讨论】:

  • 我也面临同样的问题。如果您找到了解决方案,请与我分享。

标签: yii hyperlink href


【解决方案1】:

Yii 与您的问题没有任何关系。您不知道绝对 URL 和相对 URL 之间的区别。

在您的代码中,您不会在任何地方使用 Yii。 Yii 有非常强大的 URL 管理器,方法有:createUrl、createAbsoluteUrl 等。你不用这个。

您需要了解绝对 URL 和相对 URL 之间的区别,然后您的问题就会消失。 internet 和 StackOverflow 中有更多信息:Absolute vs relative URLs

【讨论】:

  • 您提供的链接不能解决我的问题。如果您回答,请发布代码。
  • 请注意你说话的方式。我无法控制网址。它来自 API。
【解决方案2】:

试试这个:

<?php echo CHtml::link('Google', '//www.google.com', array('target'=>'_blank')) ?>

【讨论】:

  • 它创建 http : // http // google.com 形式的 url
  • 我添加了空格,因为 SO 正在将其转换为链接
  • 可以这样使用:echo CHtml::link('Google',( strpos( $r['url'], 'www')===0 )?'//'.$r['url']:$r['url'], array('target'=&gt;'_blank'))
【解决方案3】:

希望您的所有网址都是外部网址。然后检查您的网址是否为http:。如果url包含http,则直接使用,否则添加。

function is_valid_url($url)
{
   if(strpos($url, "http://")!==false)
      return $url; // correct
   else return "http://$url";// http not found.
}

在您的a 标签中

<a target="_blank" rel="nofollow" href=<?php echo is_valid_url($r['url']) ;?>>
   VISIT STORE  </a>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-10
    • 2021-11-28
    • 2014-08-21
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多