使用位置前缀Magento URL(htaccess / URL重写)

时间:2014-07-16 09:11:11

标签: php .htaccess magento url-rewriting url-routing

所以我在WordPress安装的背面设置Magento安装;所以:

  • root.level /是WordPress
  • root.level / shop /是Magento

网站的所有元素除了目录都是通过WordPress处理的。 Magento 处理目录。

该网站将完全本地化为英国,欧洲其他国家和美国市场。在WordPress上,我已经使用qTranslate插件有效地实现了这一点,所以以下所有内容都有效:

  • root.level / UK /
  • root.level / EU /
  • root.level / US /

在Magento,我创建了3个店面并使用配置我设法使它们显示为:

  • root.level /商店/ UK /
  • root.level /店铺/ EU /
  • root.level /商店/ US /

但是,为了保持一致性,我希望第一个URL段始终代表地点。因此,我已将以下内容写入根(WordPress安装)htaccess:

#shop moves
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^([a-z][a-z])/shop/(.*)[/]{0,1}$ /shop/index.php?___store=$1 [L]
RewriteRule ^([a-z][a-z])/shop[/]{0,1}$ /shop/index.php?___store=$1 [L]
</IfModule>

在root.level / uk / shop /中会产生预期的效果,会加载UK magento店面主页,root.level / uk / shop / xyz.html具有所需的行为。问题是商店页面上的链接仍然指向root.level / shop / xyz.html。如何使链接反映重写的URL?

我已尝试进入Magento 管理员 - &gt;系统 - &gt;配置,将范围设置为相关商店前面,然后在 Web 下更改&#34;链接网址&#34; (在安全不安全下)并且当它更正链接时,它会在该店面上创建每个页面404(包括主页)。我需要编辑Magento的URL阅读行为吗?

编辑: 所以这很奇怪。我已经在/ eu / shop /和/ us / shop /上工作但是/ uk / shop /仍在返回404s。我认为这是因为英国被设定为违约,但改变似乎并不影响事情。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用此.htaccess来使其正常工作:

<IfModule mod_rewrite.c>

  RewriteEngine On
  RewriteBase /

  # Redirect old /shop/uk/ to new /uk/shop
  RewriteCond %{THE_REQUEST} ^/shop/([a-z]{2})(.*)$ [NC]
  RewriteRule ^ %1/shop/%2 [R=302,L]

  # Load the right file for new /uk/shop
  RewriteRule ^([a-z]{2})/shop/(.*)/?$ /shop/index.php?___store=$1 [L]
  RewriteRule ^([a-z]{2})/shop/?$      /shop/index.php?___store=$1 [L]

</IfModule>