如何在PHP中将大写url查询字符串重定向为小写


How to redirect uppercase url query string to lowercase in PHP

我最近在一个正在开发的网站上更改了查询字符串中的URL参数,需要一种高效的PHP方法将所有包含查询字符串的搜索引擎索引链接从大写格式重定向到小写格式。

这里有一个例子:

http://computerhelpwanted.com/jobs/?occupation=Director&position=IT+Director

请注意,查询字符串参数的第一个字母是大写的,但单词IT都是大写的。我需要重定向到URL的小写版本,这就是网站现在使用的。

我尝试了一个htaccess+php的解决方案,但它造成了太多的问题。如果你有兴趣看剧本,这里有链接。https://www.simonholywell.com/post/2012/11/force-lowercase-urls-rewrite-php.html以及当我遇到问题时关于stackoverflow的问题PHP htaccess重定向url,查询字符串从大写到小写

因此,对于这个问题,如果可能的话,我只想坚持使用纯PHP的方法。除非你知道一种在htaccess中不使用httpd.conf、映射或mod拼写的方法,因为我无法访问它。

感谢所有的帮助!

您可以尝试以下操作:

if ( $_SERVER['REQUEST_URI'] != strtolower ( $_SERVER['REQUEST_URI'] ) )
    header ('Location: //' . $_SERVER['HTTP_HOST'] . strtolower ( $_SERVER['REQUEST_URI'] ));

只有在URI还没有小写的情况下,这才会重定向到URI的小写版本。开始处的//由浏览器替换为实际的url模式。

在纯PHP中,

if(preg_match('~[A-Z]~', $_SERVER['REQUEST_URI'])) {
    header("Location: http://" . $_SERVER['HTTP_HOST'] . strtolower($_SERVER['REQUEST_URI']));
}

如果你想永久重定向:

header(above thing, true, 301);