客户希望他的Multistore商店这样建立:

这是一个例子,但可能还有更多不同的子文件夹。处理不同商店视图 /网站的不同子文件夹的最佳方法是什么?

我知道一种解决方案是创建称为的子文件夹 de, en 等。并将索引和.htaccess复制到相应的子文件夹中。

也可能有一些解决方法(index.php的符号链接,vhost配置而不是使用.htaccess)来最小化文件重复,但我想找到一个解决方案,我不必在文件系统中进行任何更改,而只是只做任何更改通过配置处理所有内容。


更新

我们通过企业支持验证了这一点的最佳方法是创建子文件夹。

我们最终这样做了:

  • 创建一个“语言文件”目录
  • 在目录内创建了index.php的副本,以及调整后的.htaccess和符号链接到Magento文件夹(app/,errors/,...)
  • 创建的Symlinks“ de”,“ en”等。在Magento根目录中指向“ Language Folders”目录

这样,我们可以通过创建新的符号链接(例如“ FR”)来添加新语言。

有帮助吗?

解决方案

根据URL提供多个域/路径非常容易。如前所述, 当唯一时,最简单的设置(仅配置)是可能的 core/store 代码可以在路径中用作子文件夹. 。这需要以下一个:

  1. 访问者最初链接到正确的子文件夹路径
  2. 访客提供了一个着陆页,他们从中选择商店并收到cookie
  3. 某些机制用于在PHP处理响应之前设置运行类型和运行代码

关于#3:由于1.4 Magento,因此可以允许Web服务器确定运行上下文(网站 或者 店铺)以及应使用的特定代码。从 index.php:

/* Store or website code */
$mageRunCode = isset($_SERVER['MAGE_RUN_CODE']) ? $_SERVER['MAGE_RUN_CODE'] : '';

/* Run store or run website */
$mageRunType = isset($_SERVER['MAGE_RUN_TYPE']) ? $_SERVER['MAGE_RUN_TYPE'] : 'store';

Mage::run($mageRunCode, $mageRunType);

尽管环境变量用于初始化应用程序,但可能会在PHP旋转之前影响系统。与Apache和 mod_rewrite 这可以为具有一些骗子的子文件夹做到:

RewriteCond %{REQUEST_URI} ^/de/$
RewriteRule .* - [E=MAGE_RUN_CODE:deutsch]
RewriteCond %{ENV:REDIRECT_MAGE_RUN_CODE} (.+)
RewriteRule .* - [E=MAGE_RUN_CODE:%1]

Apache对环境变量和子文件夹的抽搐,如 这个很好的答案. 。最初的两行导致 $_SERVER["REDIRECT_MAGE_RUN_CODE"] = 'deutsch'; 后两条线提供所需的 $_SERVER["MAGE_RUN_CODE"] = 'deutsch';. 。还有许多其他技巧,但是以上以前咬了我。

最终目标应该是合理的初始检测(GEOIP +多语言问题),同时让用户设置商店cookie,该cookie可以用来在后续请求中绕过/逐步浏览逻辑。

其他提示

如果缩进的URL(子文件夹)可以具有与商店代码相同的名称(为什么不?),则可以简单地启用 Configuration > Web > Url options > Add Store Code to Urls.

我们最终做到了

我们通过企业支持验证了这一点的最佳方法是创建子文件夹。

我们最终这样做了:

  • 创建一个“语言文件”目录
  • 在目录内创建了index.php的副本,以及调整后的.htaccess和符号链接到Magento文件夹(app/,errors/,...)
  • 创建的Symlinks“ de”,“ en”等。在Magento根目录中指向“ Language Folders”目录

这样,我们可以通过创建新的符号链接(例如“ FR”)来添加新语言。

在后端,我们设置了商店 base urldomain.com/en

如果您使用nginx,您的位置处理需要更新来处理新的子文件夹中的index.php。每个新的翻译文件夹都需要完成此操作

有一个 进入官方Magento知识库 这完全描述了这一点。

如果您正在使用Apache,请确保所有虚拟主机条目(对于每个域)都指向Magento安装所在的同一文档根。那是针对多个域。

下一个(也是最后一件事)是 .htaccess 在同一Magento安装文件夹中。 .htaccess是一个功能强大的目录级配置文件,您可以在其中每个服务器请求设置规则行为。因此,您将需要处理所有不同的(子)域/文件夹操作,并设置Magento在初始化阶段使用的正确服务器变量。

完成服务器配置后,您将必须为Magento Admin(System -System -Configuration -enstry -Web)中的每个商店设置不同的基本路径。

因此,请确保您遵循官方指南(这也是首选的方式),并且事情应该顺利进行。

首先,您必须在Magento Admin面板中进行一些配置,然后创建一个子目录,然后将index.php和.htaccess移动到子目录中,然后对index.php进行一些较小的更改。

这里 是如何做到这一点的完整示例。

许可以下: CC-BY-SA归因
scroll top