我有两个域,比如说 example.com
和 example.tld
。但我希望用户始终访问 .tld
域。我想使用 .htaccess
并尝试过
RewriteEngine on
RewriteRule ^(.*)$ http://example.tld/$1 [R=301,L,QSA]
当我打开 example.com
时,它会重定向到 example.tld
。但是当我打开 example.tld
时出现错误
This webpage has a redirect loop
我必须如何修改重定向语句?
最佳答案
因此,您将需要一个 RewriteCond
来确保后续的 RewriteRule
仅在请求的 HTTP_HOST
为 example.com 时应用
。
RewriteEngine On
# Apply the rule if the host does not already match example.tld
RewriteCond %{HTTP_HOST} !^example\.tld$
RewriteRule (.*) http://example.tld/$1 [L,R=301,QSA]
请注意,在使用 [R]
时,[QSA]
已经是隐式的。您实际上不需要在此处添加它,但也没有坏处。
上面的代码会将任何域example.tld
重定向到example.tld
。如果您添加了您不想重定向的第三个域(仅重定向 example.com
),而不是 RewriteCond
中的否定匹配,您可以使用肯定匹配仅限该域。
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://example.tld/$1 [L,R=301,QSA]
关于.htaccess - 如何强制 .com 域重定向到 .tld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045056/