Joe*_*vey 5 php apache wordpress nginx magento
我们在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 [E=MAGE_RUN_CODE:%1] [L]
Run Code Online (Sandbox Code Playgroud)
然后在/products/.htaccess中
RewriteCond "%{ENV:REDIRECT_MAGE_RUN_CODE}"
RewriteRule .* - [E=MAGE_RUN_CODE:%{ENV:REDIRECT_MAGE_RUN_CODE}] [L]
Run Code Online (Sandbox Code Playgroud)
我检查了代码是通过index.php来完成的
echo getenv('MAGE_RUN_CODE');
Run Code Online (Sandbox Code Playgroud)
在我的情况下,商店代码是"en"等..但语言切换器不起作用它击中Magento但得到404甚至认为商店代码肯定是通过.
小智 1
您只需要从后台进行一些配置。
系统 => 配置 => 常规 => Web => URL 选项
将商店代码添加到 URL否
系统 => 配置 => 常规 => Web => 不安全
基本链接 URL http://example.com/en/products/
系统 => 配置 => 常规 => Web => 安全
基本链接 URL https://example.com/en/products/
然后,在 htaccess 中添加一条规则来设置正确的商店代码:
SetEnvIf Host .*example.com/en* MAGE_RUN_CODE=en_store
SetEnvIf Host .*example.com/fr* MAGE_RUN_CODE=fr_store
归档时间: |
|
查看次数: |
148 次 |
最近记录: |