.htaccess 文件中的多个重定向 - 执行第一个

.htaccess 文件中的多个重定向 - 执行第一个

我正在尝试使用 .htaccess 将表达式引擎中的单个页面重定向到另一个站点的页面。我们的 .htaccess 文件有大量其他重写规则和重写条件,以确保表达式引擎站点有效运行。

我在 .htaccess 文件的顶部有这个 RedirectMatch。

RedirectMatch (?i)^/my-page https://www.differentsite.com/my-page

重定向可以正常发送到新网站,只是在目标服务器上的 URL 末尾添加了一个额外的“?/my-page”。因此,它显示为“https://www.differentsite.com/my-page?/my-page

我相信这是因为 .htaccess 文件中此规则下方的一些其他规则附加/尝试了 URL 的一些额外部分。

我如何确保仅使用.htaccess 执行第一行?

另外,有没有办法可以测试 .htaccess URL 在通过某种类型的访问/日志文件之前到底试图发送什么?

谢谢!

答案1

尝试[L]在行尾添加标志。想想,可能会有帮助。

RedirectMatch (?i)^/my-page https://www.differentsite.com/my-page [L]

有关 .htaccess 中标志的更多信息这里

答案2

@atom_n 是正确的,我需要一个 L 标志!

但是,L 标志不适用于 RedirectMatch,所以我不得不使用重写规则。最终可行的解决方案如下

RewriteCond %{REQUEST_URI} /my-page [NC]
RewriteRule (.*) https://www.differentsite.com/my-page [R=301,L]

此后一切运行正常。

相关内容