重定向时如何在源URL上排除斜杠?

时间:2019-05-30 17:26:17

标签: .htaccess redirect mod-rewrite url-redirection

我必须将301从一个域重定向到另一个域(从example-a.comexample-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的情况下进行重定向?

1 个答案:

答案 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(永久)重定向。这是为了避免浏览器在测试时缓存错误的重定向。