具有针对不同域的 htaccess 重写的 Magento multistore

Magento multistore with htaccess rewrites for different domains

我们将旧的电子商务网站从 PrestaShop 安装迁移到新的 Magento setup/installation。

当我们进行此移动时,我们在新的 Magento 服务器上的 htaccess 中添加了大量 301 重写,以反映所有已更改的 url。

这工作完美无瑕,但现在我们想在这个新的 Magento 安装上移动并添加另一个域并设置多存储环境。

如何让新的301规则,对于这个新域,运行只在访问新域的时候,不影响之前的改写,对于原域?

这基本上就是我们现在所拥有的:

# OLD DOMAIN REWRITE RULES ON MAGENTO SERVER
RewriteRule ^oldurl1.html(.*)$      /new-nice-url1/?    [R=301,NC,L]
RewriteRule ^oldurl2.html(.*)$      /new-nice-url2/?    [R=301,NC,L]
RewriteRule ^oldurl3.html(.*)$      /new-nice-url3/?    [R=301,NC,L]
...

这是我们一直在尝试添加的内容:

# NEWLY ADDED DOMAIN TO MAGENTO MULTISTORE ENVIRONMENT
RewriteCond %{HTTP_HOST} ^www\.newdomain\.com
RewriteRule ^newdomain-old-url1.html(.*)$       /new-domain-url1/?   [R=301,NC,L]
RewriteRule ^newdomain-old-url2.html(.*)$       /new-domain-url2/?   [R=301,NC,L]
RewriteRule ^newdomain-old-url3.html(.*)$       /new-domain-url3/?   [R=301,NC,L]
...

但这似乎并不能解决问题。

从您的问题和评论来看,您似乎想要隔离不同域的重写规则。尝试在每个 RewriteRule 块上方使用 RewriteCond,如下所示:

# OLD DOMAIN REWRITE RULES ON MAGENTO SERVER
RewriteCond %{HTTP_HOST} !^(www\.)?newdomain\.com
RewriteRule ^oldurl1.html(.*)$      /new-nice-url1/?    [R=301,NC,L]
RewriteRule ^oldurl2.html(.*)$      /new-nice-url2/?    [R=301,NC,L]
RewriteRule ^oldurl3.html(.*)$      /new-nice-url3/?    [R=301,NC,L]

# NEWLY ADDED DOMAIN TO MAGENTO MULTISTORE ENVIRONMENT
RewriteCond %{HTTP_HOST} ^(www\.)?newdomain\.com
RewriteRule ^newdomain-old-url1.html(.*)$       /new-domain-url1/?   [R=301,NC,L]
RewriteRule ^newdomain-old-url2.html(.*)$       /new-domain-url2/?   [R=301,NC,L]
RewriteRule ^newdomain-old-url3.html(.*)$       /new-domain-url3/?   [R=301,NC,L]

您也可以使用此条件来保留您的旧域重写:

RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com

请随时在线试用这些规则 .htaccess tester