更正 Joomla 的 HTML <head> 和 <body> 中错误生成的 href 链接

Posted

技术标签:

【中文标题】更正 Joomla 的 HTML <head> 和 <body> 中错误生成的 href 链接【英文标题】:Correcting wrongly generated href link in the HTML <head> and <body> of Joomla 【发布时间】:2020-01-13 19:36:02 【问题描述】:

我在多语言网站上使用的其中一个 Joomla 3 模板在 html 标题和正文中生成了错误的 href 标记链接。所有多语言页面上的 href 内容如下:

在头部 链接 href="https://domain/page?layout=post" rel="alternate" hreflang="en-GB" /> 在身体里 a href="/fr/page?layout=post">

应该是

链接 href="https://domain/page" rel="alternate" hreflang="en-GB" /> 和 一个 href="/fr/page">

我目前使用了 .htaccess 文件的临时重写;然而,这产生了数百个 301 重定向,我确信这不是一个好的 SEO 解决方案。

因为找到原点并永久更正代码需要一些时间,所以我需要一些 php 帮助来删除字符串 ?layout=post 并在 and 中显示正确的 href 链接。

【问题讨论】:

【参考方案1】:

我猜你需要进入 Joomla 设置并启用搜索引擎友好的 URLs

只有在此之后,您才应该修改 .htaccess 文件。

这应该可以解决您的问题,如果不是,那可能是您所说的模板问题,但是您必须在模板文件中查看它,这需要您花费一些时间。

【讨论】:

【参考方案2】:

这是我正在使用的版本。 我是在干净的 php 上实现的。

    <?php
// your full url
$url = 'https://www.shop.com/en/category/tv-video-and-audio/';
//accepted languages or site version
$langs = array(
        'en',
        'cn',
        'ru'
    );
    //function to render full page link in all languages
function renderhrefurl($url = NULL, $lang = NULL)
    $exploded = explode('/', $url);
    $exploded[3] = $lang;
    return implode('/', $exploded);

//set hreflang attribute data
$hreflangs = array(
    array(
        'hreflang' => 'en',
        'hrefurl' => renderhrefurl($url, 'en')
        ),
    array(
        'hreflang' => 'cn',
        'hrefurl' => renderhrefurl($url, 'cn')
        )
        ,
    array(
        'hreflang' => 'ru',
        'hrefurl' => renderhrefurl($url, 'ru')
        )
    );
    //generate result
    foreach($hreflangs as $key => $item)
        echo '
        Key: '.$key.' - lang: '.$item['hreflang'].' = '.$item['hrefurl'];
    
    echo '
    ------- Rendered Href Langs Tags ------- ';
    //generate completed hreflangs
        foreach($hreflangs as $key => $item)
        echo '
        <link rel="alternate" hreflang="'.$item['hreflang'].'" href="'.$item['hrefurl'].'" />';
    
    
    ?>

复制此代码并粘贴到php compiler online 以显示其工作原理。 并使用strtok('Your link with get parameter', '?');删除get参数!

【讨论】:

以上是关于更正 Joomla 的 HTML <head> 和 <body> 中错误生成的 href 链接的主要内容,如果未能解决你的问题,请参考以下文章

Joomla1.5:模板化片段

自定义HTML / PHP / Mysql表单在Joomla中不起作用

如何修改 Joomla 文章样式?

浏览器会自动更正 HTML 中的标签/注释吗?

Joomla 剥离#usemap

HTML,PHP,JOOMLA:example de structure d\&