为Magento URL加上Locality前缀(htaccess/URL重写)


Prefixing Magento URL with Locality (htaccess/URL rewriting)

所以我要在WordPress安装的后面安装一个Magento;所以在:

  • 根。level/is WordPress
  • 根。关卡/商店/是Magento

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

该网站将完全针对英国、欧洲其他地区和美国市场进行本地化。在WordPress上,我使用qTranslate插件有效地实现了这一点,因此以下所有内容都可以正常工作:

  • root.level/英国/
  • root.level/欧盟/
  • root.level/美国/

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

  • root.level/商店/英国/
  • root.level/商店/欧盟/
  • root.level/商店/美国/
然而,为了一致性,我更希望第一个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>

在根上有预期的效果。level/uk/shop/将加载英国magento店面主页,而root.level/uk/shop/xyz.html具有期望的行为。问题是商店页面上的链接仍然指向root.level/shop/xyz.html。如何使链接反映重写的url ?

我试过进入Magento Admin->System->Config,将范围设置到相关的商店前面,然后在Web更改"链接URL"(在安全不安全下),而这纠正了链接,它使每个页面404(包括主页)在该店面。是否有地方我需要编辑Magento的URL阅读行为?

编辑:这很奇怪。我已经修好了/eu/shop/和/us/shop/,但是/uk/shop/还在退回404。我认为这是因为英国注定要违约,但改变这一点似乎并没有影响到事情。什么好主意吗?

您可以使用此.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>