具有针对不同域的 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。
我们将旧的电子商务网站从 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。