我正在尝试使用 .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]
此后一切运行正常。