解决与语言子文件夹和语言参数的冲突

时间:2014-07-31 15:50:31

标签: .htaccess joomla url-rewriting

在多语言joomla网站上,我有每个语言的虚拟子文件夹,如下所示:

  • example.com/的 EN /类别/页
  • example.com/的 /类别/页
  • example.com/的 FR /类别/页

但是,在Google网站站长工具中,当我抓取时,我有404:

  • example.com/的 EN /类别/网页?郎=
  • example.com/的 /类别/网页?郎= FR

我试过了:

RewriteRule ^en/mypage$ http://www.example.com/en/mypage? [L,R=301]

但当然它会使循环重定向无效。

我该如何解决这类问题?
有没有办法取代langage param,总能得到这样的东西:

  • example.com/的 EN /类别/网页?郎= EN

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,那么一种解决方案就是更改您的站点地图。这就是我通常在我的多语言Joomla网站上这样做的方式。

1 - 安装Xmap

2 - 来自Joomla后端> Xmap,我创建了一个新的站点地图,在菜单选项下,我包含了我想用所有语言编制索引的所有菜单链接

3 - 发布并保存后,请记下此新站点地图的Xmap ID。

4 - 创建一个新的文本文件,类似于下面的内容。将其保存到您网站的根目录为sitemap.xml
请注意,您可能需要将xmap ID更改为上面的mantch 3,并且您需要为您网站上的每种语言添加<loc>条目

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <sitemap>
      <loc>http://your_domain/index.php?option=com_xmap&amp;view=xml&amp;id=1&amp;lang=en</loc>
   </sitemap>
   <sitemap>
      <loc>http://your_domain/index.php?option=com_xmap&amp;view=xml&amp;id=1&amp;lang=fr</loc>
   </sitemap>
</sitemapindex>

5 - 检查您现在可以使用上述<loc>行中的网址直接访问每种语言的站点地图,例如:

http://your_domain/index.php?option=com_xmap&amp;view=xml&amp;id=1&amp;lang=en 

6 - 将http://your_domain/sitemap.xml提交给网站站长工具,作为站点地图的位置。谷歌足够聪明,可以在此之后找出语言设置。

祝你好运!

答案 1 :(得分:0)

这有点晚了,但是我使用的解决方案(大卫的回答是一个非常好的开始)。

Xmap不再存在,OSmap不是最好的解决方案,因为它不遵循Google对多语言站点地图的建议,并且说每个链接都需要<xhtml:link rel="alternate"[...]

所以:我用OSmap来获取所有链接quiclky;然后我手动创建一个格式正确的站点地图。然后我将我的站点地图发布到网站管理员工具(每种语言都有一个),然后我放置了一个sitemap_index.xml来帮助抓取工具找到它们。