我的客户以大写字母打印了指向该网站的链接。 我有CI安装,需要更改htaccess或基本控制器(我在mo尝试了很多选项)才能像这些示例一样工作(用户将其输入到地址栏中):
http://www.site.com/HAPPY/chappy - > http://www.site.com/happy/chappy
http://www.SITE.com/HaPpy/CHAPpy - > http://www.site.com/happy/chappy
http://WWW.Site.CoM/happy/chappY - > http://www.site.com/happy/chappy
依旧...... 我似乎无法简单地说'把所有东西都拿进来,把它变成小写然后处理它'
这甚至可能......?
答案 0 :(得分:0)
是的,您可以在输入文本后立即将输入转换为小写字母。你可以用javascript做到这一点。请参考下面的代码snipe。
function makeLowercase() {
document.form1.outstring.value = document.form1.instring.value.toLowerCase();
}
<input name="outstring" type="text" value="" size="30" onkeyup="makeLowercase();" onblur="makeLowercase();">
或者您可以在PHP中使用 strtolower()函数将数据转换为小写并处理它。
答案 1 :(得分:0)
您可以使用.htaccess重写主机名后的部分(无论如何都不区分大小写):
http://www.chrisabernethy.com/force-lower-case-urls-with-mod_rewrite/
答案 2 :(得分:0)
Extend the CI_Exceptions core class使用您自己的show_error
功能。使用show_error
的原始代码,但在这些行中添加一个快速检查:
class MY_Exceptions extends CI_Exceptions {
/**
* General Error Page
*
* This function takes an error message as input
* (either as a string or an array) and displays
* it using the specified template.
*
* @access private
* @param string the heading
* @param string the message
* @param string the template name
* @return string
*/
function show_error($heading, $message, $template = 'error_general', $status_code = 500)
{
// First try forwarding to all-lowercase URL if there were caps in the request
if ($_SERVER['REQUEST_URI'] != strtolower($_SERVER['REQUEST_URI']))
{
header('Location: ' . strtolower($_SERVER['REQUEST_URI']));
return;
}
/* Rest of original function to follow... */
根据需要自定义,记住您可能希望使用大写的URI的其他部分。
您也可以使用pre_system (or pre_controller) hook实现类似功能,但我个人只会在已经为其他目的启用挂钩时才这样做。
答案 3 :(得分:0)
您可以将核心路由库扩展为不区分大小写。这就是你放置strtolower()
功能的地方。
将它添加到404错误处理程序是个坏主意。
如果你想要源LMK,但它应该是扩展库,复制1个函数,并添加strtolower()
。