我们在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)
我想要达到的确切规格就是这个.
尝试1 使用基本链接URL输入/ en/products并将基本URL保留为/ products
当第一个请求被转发时,我必须在root .htaccess中像这样工作setEnv
RewriteCond %{REQUEST_URI} ^/(.*)/products
RewriteRule ^(.*)$ /products/index.php …
Run Code Online (Sandbox Code Playgroud)