重写 htaccess 文件中的规则重定向其他 URL



我有一些页面在谷歌搜索控制台上显示为断开的链接,其中之一是......

https://evolvefitness.co.uk/personal-trainer-london/

。确实存在的网址是...https://evolvefitness.co.uk/locations/personal-trainer-london/...所以我将此重定向添加到我的 htaccess 文件中...

RewriteRule ^personal-trainer-london/? https://evolvefitness.co.uk/locations/personal-trainer-london/ [R=301,L]

。这很好用,但是当我访问一个包含重定向 URL 第一部分的页面时,它也被重定向了......

https://evolvefitness.co.uk/personal-trainer-london-landing/

我现在关闭了所有重定向,但是我如何告诉重定向只发生在确切的 URL 上?是不是和最后的问号有关?我看过一些文档,但完全迷失了

这些也会在其中发挥作用吗?

RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} =on
RewriteCond %{HTTP_HOST} ^evolvefitness.co.uk

谢谢

我认为这就是你要找的:

RewriteRule ^/?personal-trainer-london/?$ https://evolvefitness.co.uk/locations/personal-trainer-london/ [R=301,L]

匹配模式中的尾随$锚定到行尾(此处为 URL 端)。这意味着仅考虑完全匹配,而不考虑对遵循该模式的 URL 的请求。

一般评论:您应该始终倾向于将此类规则放在 http 服务器主机配置中,而不是使用动态配置文件(".htaccess")。这些动态配置文件增加了复杂性,通常是意外行为的原因,难以调试,并且它们确实会减慢 http 服务器的速度。它们仅作为最后选项提供,用于您无法访问真正的http服务器主机配置(阅读:非常便宜的服务提供商)或坚持编写自己的规则的应用程序(这是一个明显的安全噩梦)。

最新更新