如何使URL不区分大小写

时间:2012-05-17 19:45:30

标签: apache .htaccess mod-rewrite

我遇到重复链接问题(根据Google网站管理员工具)

例如,Google将4种网址列为实际网址的副本

1) mysite.com/k-Summer Season-10.htm
2) mysite.com/k-Summer%20Season-10.htm
3) mysite.com/k-summer-season-10.htm (actual link)
4) mysite.com/K---10.htm

现在,如果你看一下第4个链接的结构,无论你在/ k-和-10.htm之间写什么,它都能清楚地表示不确定 您将获得第10页的内容,可以是下面的内容。

1) mysite.com/k-Summer Season-10.htm
2) mysite.com/k-Bummer%20Season-10.htm
3) mysite.com/k-Dumber-season-10.htm
4) mysite.com/K-Mars-&-Earth-Season-10.htm

那么有没有办法禁止打开其余的URL(区分大小写和空格)并给出404错误或将它们重定向到实际链接?

下面的

代码是我的.htaccess

RewriteEngine On

RewriteRule ^lightbox.htm$ lightbox.php?%{QUERY_STRING}
RewriteRule ^lightbox.([0-9]+).htm$ lightbox.php?page=$1&%{QUERY_STRING}
RewriteRule ^search.htm$ search.php?%{QUERY_STRING}
RewriteRule ^search.([0-9]+).htm$ search.php?page=$1&%{QUERY_STRING}
RewriteRule ^postcard([a-zA-Z0-9]+).htm$ postcards.php?postcard_id=$1&%{QUERY_STRING}
RewriteRule ^postcard.img([0-9]+).htm$ postcards.php?image_id=$1&%{QUERY_STRING}
RewriteRule ^k-(.*)-([0-9]+).htm categories.php?cat_id=$2&%{QUERY_STRING}
RewriteRule ^cat.htm$ categories.php?%{QUERY_STRING}
RewriteRule ^r-(.*)-([0-9]+).htm details.php?image_id=$2&%{QUERY_STRING}
RewriteRule ^r([0-9]+).search.htm details.php?image_id=$1&%{QUERY_STRING}

ErrorDocument 404 /404.php

RewriteRule ^sitemap.xml$ google.php

亲切的问候

JoJAF

1 个答案:

答案 0 :(得分:3)

尝试指定<link rel="canonical" />代码:

<link rel="canonical" href="http://mysite.com/k-summer-season-10.htm" />

StackOverflow执行此操作 - 查看此页面的源代码。更多信息here


或者,在PHP脚本中,您可以根据真实URL检查原始URL,并在必要时将用户重定向到真实URL。有关如何在任何重写规则之前获取原始网址的详细信息,请参阅this question


最后,为什么在所有网址中使用.htm后缀? URL重写方案的一个好处是,您不需要这样的东西来混乱您的URL。