2013-05-14 33 views
0

我要强制小写入眼,我使用disqus.com评论系统,我会根据页面的GET,disqus.com不区分与重新定向的问题,需要强制小写url中

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,谷歌虽然增加了对重定向的延迟 - 反正下面的测试,现在的解决方案。

+1

['strtolower()'](http://ca2.php.net/manual/en/function.strtolower.php) – Sammitch

回答

1

下面是在Apache mod_rewrite中可以完成的一种方法。

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

  2. Lowercasing一个URL需要你在你的httpd.conf中加入这一行和弹跳Apache进程:

    RewriteMap指令LC INT:tolower的

  3. 然后把这个代码在你的.htaccess DOCUMENT_ROOT目录下:

一旦你确认它正在工作改变R = 302到R = 301。

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteRule ^([^A-Z]*[A-Z].*)$ /${lc:$1} [R=302,L] 
+0

现在测试这个:) –

+0

我不认为我有权访问httpd.conf。 –

+0

这是不幸的,你可以尝试从你的托管服务提供商那里请求这个小改动。 – anubhava

0

当你打印出你的链接使用该

回声 “http://www.mydomain.com/words/?w=” .strtolower(HEJ);

+0

很明显,这将工作,但它不会禁用用户写在 –

+0

约翰的能力,无论你在这个url中做什么,用户总是有能力在浏览器中使用url。如果你不想让用户看到这些网址,那么将网址实现为一个type = submit按钮。这就是我如何隐藏我的网站管理区 – Justin

+0

一些网址很明显,他们不,如果我可以改变它在服务器级别Justin –