在 htaccess 中排除子域将非 www 重写为 www

Exclude sub domain rewrite non www to www in htacces

我有一个 Magento 多商店设置,我正在通过重写将所有非 www 请求发送到 .htacces 中的 www:

RewriteCond %{HTTP_HOST} !^www.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/ [R=301,L]

我正在使用一个子域来测试新网站,对于这个子域,我不需要重写。因此我使用:

RewriteCond %{HTTP_HOST} ^sub\.domain\.com [NC]
RewriteRule ^(.*) - [L]

现在唯一的问题是,当我访问 http:// sub.domain.com 时它有效,但是当我访问某个类别或产品时,例如 http:// sub.domain.com/cat1 或 http:// sub.domain.com/product-red.html 它不再起作用,我收到 "Not Found" 消息。

我需要在代码中添加什么才能排除整个子域,包括 / 之后的所有内容?

不要像那样使用单独的规则来忽略对子域的所有请求,否则 Magento 的路由规则也将被跳过。而是像这样调整您的 www 规则以忽略子域:

RewriteCond %{HTTP_HOST} !^(www|sub)\. [NC]
RewriteRule ^ http://www.%{HTTP_HOST}/ [R=301,L,NE]