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

时间:2014-09-25 16:02:07

标签: php apache .htaccess mod-rewrite redirect

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

这是一个例子:

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 Redirect url with query string from uppercase to lowercase

所以对于这个问题,如果可能的话,我只想坚持使用纯PHP的方式来做这件事。除非你知道htaccess的一种方式而不使用httpd.conf或映射或mod拼写,因为我没有访问权限。

感谢所有帮助!

2 个答案:

答案 0 :(得分:3)

您可以尝试以下内容:

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

仅当URI尚未小写时,才会重定向到URI的小写版本。开头的//被浏览器替换为实际的url架构。

答案 1 :(得分:1)

在纯PHP中,

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

如果您想要永久重定向:

header(above thing, true, 301);