301 如果页面不包含查询字符串则重定向域

301 Redirecting the domain if the page doesn't contain query string

我只想将根页面从 1 个子域重定向到另一个,例如: 来自 https://checkout.example.com to https://www.example.com/index.php?route=checkout/cart/

但是,包含 $ 和 & 的所有其他页面和查询字符串应保持不变。例如: https://checkout.example.com/?Amount=1899&Invoice=55498213 应该保持原样

我尝试了多个 htaccess 规则文本:Redirect 301、Redirect、RedirectMatch、RewriteRule。所有规则都使用查询字符串重定向域。

这是我当前的 .htaccess 规则

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$
RewriteCond %{HTTP_HOST} ^checkout\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/index.php?route=checkout/cart/ [L,R=301]
</IfModule>

这应该适合你:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^$
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{HTTP_HOST} ^checkout\.domain1\.com$ [NC]
RewriteRule .* https://www.domain2.com/checkout [L,R=301]

终于成功了,已添加到 .htaccess 文件的顶部

RewriteEngine On
RewriteCond %{QUERY_STRING} ^$
RewriteCond %{HTTP_HOST} ^checkout\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/index.php?route=checkout/cart/ [L,R=301]