重定向问题,需要在url中强制小写

时间:2013-05-14 22:22:29

标签: php

我想强制小写GET,我使用disqus.com评论系统,我基于GET提供页面,disqus.com没有区分

 http://www.mydomain.com/words/?w=Hej 

 http://www.mydomain.com/words/?w=hej 

它为不同的页面提供评论。

解决此问题的最佳方法是什么?我似乎无法使用我读过的.htcacess,如果它的大写,我不想提供404,是否有其他方法强制URL中的小写?

编辑2:

我尝试了自己的解决方案

$page = urldecode($_GET['w']);
$lowerPage = strtolower($page);

if ($page !== $lowerPage) {

     header("Location: http://www.mydomain.com/words/?w=". $lowerPage);
     die();
}

在Firefox中工作得很好,谷歌在重定向方面增加了延迟 - 无论如何现在测试下面的解决方案。

2 个答案:

答案 0 :(得分:1)

这是在Apache mod_rewrite中可以完成的一种方式。

  1. 首先通过httpd.conf启用mod_rewrite和.htaccess。

  2. 小一个URL需要你在httpd.conf中添加这一行并反弹Apache进程:

    RewriteMap lc int:tolower

  3. 然后将此代码放在DOCUMENT_ROOT目录下的.htaccess中:

  4. 验证工作后,将R = 302更改为R = 301。

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^([^A-Z]*[A-Z].*)$ /${lc:$1} [R=302,L]
    

答案 1 :(得分:0)

当您打印出链接时,请使用此

echo“http://www.mydomain.com/words/?w=”。strtolower(Hej);