htaccess在.html之后删除所有内容

时间:2013-03-29 12:47:57

标签: apache .htaccess mod-rewrite

我们有几个外部网站链接到我们的网站,但他们的代码格式不正确并导致链接出现问题,这使得Google认为我们网站上的404比实际更多。

正在发生的事情是他们的格式错误的代码是在.html之后添加ASCII字符,代表他们的结束锚标记。

所以,我在htaccess文件中尝试做的是删除.html之后的所有内容并重定向到干净的.html URL(不会导致无限循环)。

以下是一些关于即将发生的事情的样本......

> http://www.site.com/pagename.html">
> http://www.site.com/pagename.html</a>

我想将这些内容重定向到......

http://www.site.com/pagename.html

1 个答案:

答案 0 :(得分:3)

您只需要在<{em> .+之后匹配.html(一个或多个字符)并执行重定向。

RewriteEngine On
# Capture everything before .html into $1 (non-greedy)
# And do a redirection appending only .html onto $1
RewriteRule (.+?)\.html.+$ http://%{HTTP_HOST}/$1.html [L,R=301]

由于您正在进行重定向而不是重写,您也可以通过RedirectMatch执行此操作:

RedirectMatch permanent (.+?)\.html.+$ http://example.com/$1.html