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

时间:2019-09-11 23:36:05

标签: php joomla3.0

我在多语言网站上使用的Joomla 3模板之一在HTML标头和正文中生成了错误的href标签链接。所有多语言页面上的href都显示为:

in the HEAD
    link href="https://domain/page?layout=post" rel="alternate" hreflang="en-GB" />

in the BODY
    a href="/fr/page?layout=post">                                              

并且应该是


    link href="https://domain/page" rel="alternate" hreflang="en-GB" />
and
    a href="/fr/page">      

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

由于要花费一些时间来查找原点并永久纠正代码,因此我需要PHP的帮助,以删除字符串?layout = post 并在和中显示正确的href链接。

2 个答案:

答案 0 :(得分:0)

我的猜测是您需要转到Joomla设置并启用搜索引擎友好的网址

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

Example of Joomla settings change

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

答案 1 :(得分:0)

这是我正在使用的版本。 我在干净的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', '?');删除获取参数!