尝试使用或不使用尾部斜杠进行重定向

尝试使用或不使用尾部斜杠进行重定向

我已将博客移至子域名,并且子域名上的所有类别都已更改,因此我想从旧域名到子域名(不同的托管)创建一个 301 重定向列表。

我遇到的问题是添加尾部斜杠,这样我就不必将每个 URL 列出两次。

我尝试过这个/blog/.htaccess

RewriteEngine On

#RewriteRule ^(.*)$ http://domain.com/blog/$1/ [L,R=301] 

Redirect 301 /blog/test/ https://new.domain.com/test/
Redirect 301 /blog/example/ https://new.domain.com/example/
(etc...)

但由于浏览器检测到太多重定向,因此此方法不起作用。

这里的正确语法是什么?

我也尝试过:

RedirectMatch /blog/test/?$ https://new.domain.com/test/ [L,R=301] 

但这似乎根本不起作用。

答案1

请使用以下语法

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !example.php
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f确保现有的文件不会添加斜线。

RewriteCond %{REQUEST_URI} !example.php排除不应重写的示例 URL。

当 URL 不包含尾部斜杠时,RewriteCond %{REQUEST_URI} !(.*)/$ 最终会触发 - 这正是我们想要的。现在我们需要使用尾部斜杠重定向这些 URL:

RewriteRule ^(.*)$ http://example.com/$1/ [L,R=301]是否将 301 重定向到带有尾部斜杠的 URL。您应该将 domain.com 替换为您的 URL。

答案2

似乎有效的语法是:

RedirectMatch 301 /blog/test/?$ https://new.domain.com/test/

相关内容