htaccess文件中的RewriteRule重定向其他URL

时间:2019-01-09 14:39:27

标签: .htaccess mod-rewrite url-rewriting

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

https://stackblitz.com/edit/angular-file-upload-preview-ptgq2f

...存在的URL是... https://evolvefitness.co.uk/personal-trainer-london/ ...所以我将此重定向添加到了我的htaccess文件中...

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

...效果很好,但是当我访问包含重定向URL的第一部分的页面时,该页面也被重定向了...

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

我现在已关闭所有重定向,但是如何告诉重定向仅在确切的URL上发生?结束时与问号有关吗?我看过一些文档,但完全迷路了

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

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

谢谢

1 个答案:

答案 0 :(得分:1)

我想这就是您要寻找的:

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

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

还有一个一般性说明:您应该始终喜欢将此类规则放置在http服务器主机配置中,而不要使用动态配置文件(“ .htaccess”)。这些动态配置文件增加了复杂性,通常是导致意外行为,难以调试的原因,并且确实降低了http服务器的速度。仅当您无法访问真正的http服务器主机配置(阅读:真正便宜的服务提供商)或坚持编写自己的规则的应用程序(这显然是安全的噩梦)时,才提供它们作为最后的选择。

相关问题