htaccess 301重定向查找和替换

时间:2012-01-27 06:05:14

标签: .htaccess mod-rewrite redirect

我有一个网站,指的是各个印度城市。代码从外部源创建链接,可以将城市命名为加尔各答,加尔各答,加尔各答等。

我需要一个htaccess 301重定向规则,如果所有的拼写错误将重定向以下已知的良好拼写(加尔各答):

Calcutta-to-Delhi.html到Kolkata-to-Delhi.html

以及

Calcuta-Airport.html到Kolkata-Airport.html

感谢。

2 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情:

# REDIRECTS FROM (eg): http://www.calcutta.com.au/ to http://www.kolkata.com.au/
RewriteCond %{HTTP_HOST} ^calcutta\.com\.au$ [nocase, ornext]
RewriteCond %{HTTP_HOST} ^www\.calcutta\.com\.au$ [nocase]
RewriteRule ^(.*)$ http://www.kolkata.com.au/ [nocase,L,R=301,O]

注意忽略大小写的“[nocase]”。这只会从“calcutta”重定向到“kolkata”而不是“calcuta”或“Kolkata”(注意加尔各答中缺少的't'和加尔各答的大写'K')。

您需要按照与上述相同的代码模式添加另外两条规则。

答案 1 :(得分:0)

你所要求的并不简单,需要你拥有一台功能强大的电脑,但结果真是太棒了。

以下是我建议做的事情:

  • 您必须测试您的表达式是否与网址/匹配,即http://mysite.com/(expr1)-to-(expr2)/
  • 如果是,且没有文件,请重定向到处理所有内容的Php文件。
  • 在此Php文件中,分析URL(再次):如果您的表达式与/(expr1)-to-(expr2)/匹配,则使用MySQL进行SOUNDEX搜索(在Php文件中)。请参阅查询示例here
  • 然后,在这个“特殊”的404案例中,做一个像google那样的建议,即:“你的意思是Kolkata-to-Delhi.html吗?如果是的话,点击链接”。

这是一项艰苦的工作,但它既有趣又能展示你的技巧。很少有网站这样做(我实际上只知道谷歌)。