【问题标题】:Redirect to a page even with typing error即使输入错误也重定向到页面
【发布时间】:2016-05-19 00:35:17
【问题描述】:

我正在寻找一种在 URL 路径中缺少一个字符时允许重定向的解决方案。

下面的例子很简单,但在我的例子中,我的 URL 路径较长,有时写起来很复杂。我想找到一个处理输入错误的解决方案,我的意思是当它们发生时仍然重定向。

示例:

我知道 apache 重定向,并且已经尝试过类似的方法:

RewriteRule ^helo$              hello.php
RewriteRule ^hell$              hello.php
RewriteRule ^ello$              hello.php
RewriteRule ^hllo$              hello.php
RewriteRule ^hello$             hello.php

但我想要一些自动的,对于我没有注意到的情况,例如 /hell...

最好的办法是在 apache 中使用正则表达式,但我在 apache htaccess 管理方面相当糟糕。

我认为我也可以在我的 404 页面中使用一些 JS 代码执行此操作,如果页面 url 与列表中的元素相距一个字符,则重定向。

那你怎么看?还有比那个可怕的 JS 重定向更简单的解决方案吗?

【问题讨论】:

  • 请注意,在这条道路上,歧义正在等待发生。以及继续支持这些“重定向”以在有人编程时指向同一事物的负担。我严重怀疑这种猜测是否值得。
  • 要得到任何答案,请定义“一两个字符是错误的”。失踪?不同的?错位(多少)?多余的字符呢?
  • @ivan_pozdeev :我将编辑帖子以回答您的问题 :)
  • @anubhava : hello 不是一个有效的文件名,php 文件是目标并且会显示一个页面。我正在使用 Apache htaccess (RewriteRule ^hello$ hello.php) 进行重定向
  • 没有正则表达式可以用来纠正拼写。但是使用正则表达式,您可以处理已知的错误拼写

标签: regex apache url-redirection


【解决方案1】:

您是否有一组有限的已知 URL 可供服务?然后你也许可以计算edit distance 与那些当你达到 404 时,返回最接近的阈值以避免荒谬的匹配?

【讨论】:

  • 感谢有关编辑距离的链接 :) 我认为可能有另一种解决方案,而不是在 404 被击中时的“脏”重定向。就像 htaccess 里面的东西。 (我注意到 regexp 在 htacess 文件中的一些用途)
猜你喜欢
  • 2020-11-12
  • 2010-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 2015-03-07
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多