只要 URL 比预期长(字符串添加到 URL 末尾),就在 htaccess 文件中重定向?

问题描述 投票:0回答:1

这个问题是针对 Apache .htaccess 文件的。

假设我网站上的真实网址是:

https://abcs.org/about-scholarships

我有这种格式(示例)的传入垃圾链接(来自其他网站):

https://abcs.org/about-scholarships95scholar

https://abcs.org/about-scholarships.happy99

https://abcs.org/about-scholarshipsFTO

https://abcs.org/about-scholarships$25.00

基本上,他们在正确的 URL 末尾添加一个随机字符串。

我需要一种方法来将 any 这些类型的错误 URL 重定向到正确的 URL。

我一直在对每个被捕获的新垃圾邮件 URL 实例反应性地使用重定向 301。

例如:

Redirect 301 /about-scholarships95scholar /about-scholarships

Redirect 301 /about-scholarships.happy99 /about-scholarships

这很好用,但每天都会为我网站的多个不同页面制作数十个。

我尝试在正确的 URL 字符串后使用通配符(在重定向 301 和 RewriteRule 中),但我不知道如何正确格式化它。

感谢您的帮助!

apache .htaccess seo
1个回答
0
投票

您可以使用

RedirectMatch
(mod_alias) 指令(与正则表达式匹配)来检查
/about-scholarships<something>
并删除
<something>
部分。例如:

RedirectMatch 301 ^(/about-scholarships). $1

.
与任何字符匹配的地方(后面跟任何东西或什么都没有)。
$1
反向引用包含前面 pattern 中带括号的子组。

但是,如果您稍后在

.htaccess
文件中通过前端控制器模式路由 URL,那么您应该使用 mod_rewrite 代替此重定向以避免冲突。例如,以下内容应该放在根
.htaccess
文件的顶部(在任何前端控制器模式之前):

RewriteEngine On

RewriteRule ^(about-scholarships). /$1 [R=301,L]

注意斜杠前缀与

RedirectMatch
指令的区别。

.htaccess
中没有办法进一步优化这个。您需要为站点的每个页面制定单独的规则 - 如果您有很多页面,则该规则不可扩展。理想情况下,您将在您的应用程序逻辑(前端控制器)中执行此检查,您可以在其中自动执行此操作(尽管效率如何是另一回事)。

但是,如果这些只是“垃圾邮件”链接,那么您应该让它们变成 404。 (我假设他们以其他方式返回 404?)我看不出 redirecting 真的有用吗?

© www.soinside.com 2019 - 2024. All rights reserved.