我必须将301从一个域重定向到另一个域(从example-a.com
到example-b.com
)。
这是我在.htaccess
的{{1}}中输入的代码:
example-a.com
所有URL都相同,除了RewriteEngine on
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]
的页面的URL末尾都带有example-a.com
(斜线),而/
则不同。那么,如果URL包含一个结尾,如何在没有结尾example-b.com
的情况下进行重定向?
答案 0 :(得分:0)
RewriteRule ^(.*)$ https://www.example-b.com/$1 [R=301,L]
要从重定向的URL中排除斜杠,请从RewriteRule
模式中的捕获组中排除斜杠。例如。 ^(.*)/$
。
但是,假设您还希望重定向文档根目录(URL路径中没有斜杠),那么您需要使斜杠为可选(或创建一个完全独立的规则)。但是在那种情况下,您还需要使捕获组为 non-greedy ,否则尾部斜杠将始终包含在捕获组中(因为正则表达式默认为 greedy )
因此,请尝试以下操作:
RewriteRule ^(.*?)/?$ https://www.example-b.com/$1 [R=302,L]
在测试之前,您需要清除浏览器缓存。由于早期的301可能会被缓存。
请注意,这是302(临时)重定向。一旦确定重定向正常,请仅将其更改为301(永久)重定向。这是为了避免浏览器在测试时缓存错误的重定向。