将所有大写字母替换为小写字母,除了urlencoded字符串
问题描述:
我在PHP中有一个非常简单的重定向为小写的重定向,因为我的共享服务器限制,我无法在.htaccess中执行此操作。将所有大写字母替换为小写字母,除了urlencoded字符串
if (preg_match('/[A-Z]+/', $url)){
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".strtolower($url));
exit;
}
但是在某些情况下.htaccess可能已经重定向了一个url。所有这些情况都有urlencoded字符,即。 %7E。
所以我需要检查任何不是urlencoded char形式的大写字符,并用小写字符替换它们。
最坏的情况(也许最好)我不想尝试已经重定向的标题,我可以检查它是否已被重定向到PHP。
任何想法,我怎么可以这样做呢?
答
你根本就做的是解码URL删除urlencoded的字符,然后你用用strtolower(),然后对其进行编码回:
header("Location: ". urlencode(strtolower(urldecode($url))));