我在多语言网站上使用的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链接。
答案 0 :(得分:0)
我的猜测是您需要转到Joomla设置并启用搜索引擎友好的网址
只有在此之后,您才应该修改 .htaccess 文件。
这应该可以解决您的问题,如果不是您说的是模板问题,那么您必须在模板文件中查找它,这可能需要一些时间。
答案 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', '?');
删除获取参数!