小编Joe*_*vey的帖子

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

我们在root//物理子文件夹/ wp和Magento in/products中有Wordpress.

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

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

domain.com/en (wordpress)
domain.com/products/en (magento)
Run Code Online (Sandbox Code Playgroud)

当然我们想要

domain.com/en
domain.com/en/products
Run Code Online (Sandbox Code Playgroud)

现在,使用一些重写规则很容易

RewriteRule ^(.*)/products/?(.*)$ /products/$1 [L]
Run Code Online (Sandbox Code Playgroud)

但是我们还有一个问题,因为Magento生成链接为/ products/en它可以开始修改这些链接的生成位置,如

\Magento\Store\Model\Store 
Run Code Online (Sandbox Code Playgroud)

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

在一般情况下似乎是一个糟糕的解决方案,另一个想法是使用Apache mod_substitute也似乎不好的做法和开销.

另一种选择是让根目录中的两个应用程序都有一些查找逻辑,以查看哪个url属于哪个应用程序.

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

这是我根目录中的.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>
Run Code Online (Sandbox Code Playgroud)

我想要达到的确切规格就是这个.

  • 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 …
Run Code Online (Sandbox Code Playgroud)

php apache wordpress nginx magento

5
推荐指数
1
解决办法
148
查看次数

标签 统计

apache ×1

magento ×1

nginx ×1

php ×1

wordpress ×1