gpt4 book ai didi

php - Apache 两个应用程序一个域共享语言/en - Magento 和 Wordpress

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:46:19 25 4
gpt4 key购买 nike

我们在根/物理子文件夹/wp 中有 Wordpress,在/products 中有 Magento。

我们希望使用子文件夹(例如 domain.com/en)使网站支持多语言

问题出现了,因为 magento 在 url 后面附加了商店代码(语言),所以我们有

domain.com/en (wordpress)
domain.com/products/en (magento)

当然我们想要

domain.com/en
domain.com/en/products

现在很容易让它与一些重写规则一起工作

RewriteRule ^(.*)/products/?(.*)$ /products/$1 [L]

但是我们仍然有一个问题,因为 Magento 生成链接为/products/en 可以开始修改生成这些链接的位置,就像在

\Magento\Store\Model\Store 

在 _updatePathUseStoreView 函数中,这似乎并没有处理所有链接

总的来说似乎是一个糟糕的解决方案,另一个想法是使用 Apache mod_substitute 似乎也是不好的做法,而且开销很大。

另一种选择是将两个应用程序都放在根目录中,并使用一些查找逻辑来查看哪个 url 属于哪个应用程序。

关于可以纯粹使用 Nginx/Apache 的设置的任何想法。这不会影响具有唯一 url 或正则表达式的内容。

这是我在根目录下的 .htaccess

<IfModule mod_rewrite.c>
RewriteEngine on

RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteCond %{REQUEST_URI} !^/wp/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !^/(.*)/products
RewriteRule ^(.*)$ /wp/$1
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ wp/index.php [L]

RewriteCond %{REQUEST_URI} ^/(.*)/products
RewriteRule ^(.*)$ /products/index.php [L]

</IfModule>

我要达到的确切规范是这样的。

  • Wordpress 安装在/wp 中,Magento 安装在/products 中
  • 两个站点上使用的子文件夹的语言代码显示为/en/wordpress-page/en/products/magento-page

尝试 1使用基本链接 URL 输入/en/products 并将基本 URL 保留为/products

当第一个请求被转发时,我必须在 root .htaccess 中像这样处理 setEnv

RewriteCond %{REQUEST_URI} ^/(.*)/products
RewriteRule ^(.*)$ /products/index.php [E=MAGE_RUN_CODE:%1] [L]

然后在/products/.htaccess 中

RewriteCond "%{ENV:REDIRECT_MAGE_RUN_CODE}"
RewriteRule .* - [E=MAGE_RUN_CODE:%{ENV:REDIRECT_MAGE_RUN_CODE}] [L]

我检查了代码是否通过 index.php 执行

 echo getenv('MAGE_RUN_CODE');

在我的例子中,商店代码是“en”等。但是语言切换器不起作用,它点击了 Magento 但得到 404,即使商店代码肯定会通过。

最佳答案

您只需要从后台进行一些配置。

系统 => 配置 => 常规 => Web => 网址选项

将商店代码添加到 Urls

系统 => 配置 => 常规 => 网络 => 不安全

基本链接 URL http://example.com/en/products/

系统 => 配置 => 常规 => 网络 => 安全

基本链接 URL https://example.com/en/products/

然后,在htaccess中添加一条规则来设置正确的商店代码:


SetEnvIf 主机 .*example.com/en* MAGE_RUN_CODE=en_store
SetEnvIf 主机 .*example.com/fr* MAGE_RUN_CODE=fr_store

关于php - Apache 两个应用程序一个域共享语言/en - Magento 和 Wordpress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51080816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com