有 301 通配符匹配吗?

Posted

技术标签:

【中文标题】有 301 通配符匹配吗?【英文标题】:Is there a 301 wildcard match? 【发布时间】:2015-05-13 15:28:51 【问题描述】:

在完成网站重新设计后,我很难处理似乎需要的所有 301 重定向。整个子目录及其广泛的内容不再存在。例如,如果“myolddata”是一个不再存在的文件夹,并且充满了无数的文件,每个文件也不再存在,我想说“忘记所有这些,直接进入索引页面”。似乎没有其他方法可以关闭 Google 和 Bing 无休止地向我报告大量 404 问题。有没有一种有效的说法:

Redirect 301 /myolddata/  /index.html
Redirect 301 /myolddata/* /index.html

第一个说“忘记文件夹”,第二个说“忘记其中的所有内容”?

这个问题的第二部分是旧的 php 文件及其任意搜索参数也被记录下来。像这样的东西:

oldfile.php?this=1&that=2&somethingelse=3
oldfile.php?this=Tom&that=Dick&somethingelse=Harry

你明白了。数以百万计。我怎样才能设置一个 301 说“忘记 oldfile.php 和任何可以想象的参数 - 它们都消失了!”

您的帮助、cmets 和建议将非常有价值,因此欢迎所有见解!

【问题讨论】:

【参考方案1】:

使用301 状态码更好地使用mod_rewrite 规则。在您的 DOCUMENT_ROOT/.htaccess 文件中使用此代码:

RewriteEngine On

RewriteRule ^(oldfile\.php$|myolddata(/|$)) /index.html? [L,NC,R=301]

? 最后将删除任何现有的查询字符串。

【讨论】:

嗨。 @anubhava 我可以请您再向我描述一下吗?我认为第一部分(RewriteRule ^(oldfile\.php$) 是指具有任意参数的文件,但第二部分( |myolddata(/|$)) )是指一个名为 myolddata 的文件夹和所有可能在它?谢谢。 是的,这绝对正确。 | 是这里的正则表达式替换。 我今天无法测试 - 可能是在周末之后,但我会回复你! 嗨,anubhava,我今天测试了你的配方,效果如愿 - 非常感谢。我将您的答案标记为正确。我也可以标记一个小请求以进行额外说明吗?仅分离出文件名匹配我导出了简化的 RewriteRule ^(oldfile\.php$) /index.html? [L,NC,R=301] - 当 'oldfile.php' 位于根目录时有效。我如何修改它以匹配所有可能找到的 oldfile.php 副本?谢谢! 谢谢。你是真正的正则表达式忍者!!祝你有美好的一天阿努巴瓦 :)

以上是关于有 301 通配符匹配吗?的主要内容,如果未能解决你的问题,请参考以下文章

htaccess 301重定向通配符以获取新的基本域名

我可以在 Libsoup 服务器中使用通配符模式匹配吗?

egrep匹配表达式与通配符

查找具有通配符匹配的文件

Ant风格路径匹配的通配符

“charlist”样式通配符是 SQL-92 标准的一部分吗?