【发布时间】:2016-05-19 00:35:17
【问题描述】:
我正在寻找一种在 URL 路径中缺少一个字符时允许重定向的解决方案。
下面的例子很简单,但在我的例子中,我的 URL 路径较长,有时写起来很复杂。我想找到一个处理输入错误的解决方案,我的意思是当它们发生时仍然重定向。
示例:
- http://example.com/helo 重定向到 http://example.com/hello
- http://example.com/hell 重定向到 http://example.com/hello
- http://example.com/ello 重定向到 http://example.com/hello
- http://example.com/hllo 重定向到 http://example.com/hello
我知道 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