define('DISALLOW_FILE_EDIT', true);
Here’s the code:
[cc lang=’php’ ]
< ?php
/*
Plugin Name: unFocus.Insensitivity
Plugin URI: http://www.unfocus.com/projects/
Description: A plugin to make permalinks case insensitive.
Version: 1.0a
Author: Kevin Newman
Author URI: http://www.unfocus.com/projects/
*/
function unFocus_insensitivity() {
if (preg_match('/[A-Z]/', $_SERVER['REQUEST_URI'])) {
$_SERVER['REQUEST_URI'] = strtolower($_SERVER['REQUEST_URI']);
$_SERVER['PATH_INFO'] = strtolower($_SERVER['PATH_INFO']);
}
}
add_action('init', 'unFocus_insensitivity');
?>
[/cc]
Pretty simple really. Honestly, it doesn’t really even need to use a WordPress hook, just the two lines that convert the $_SERVER variables would do it (assuming those aren’t locked down in the php.ini). But I wanted to learn the plugin API anyway. There is an archive download at the end of this post, just unzip the enclosed file, and put it in your plugin directory, upload it and turn it on. No other configuration necessary.
If there is any interest, I was thinking about adding a config option that would allow you to either forward to the all lowercase URL, or to do what it does now, which is to behave pretty much the way IIS does for any other static files it hosts.
Also, if there’s interest, I may try to figure a way to work this WordPress IIS Permalink 404 handler into the plugin, if it’s possible (IIS users would set their custom 404 handler redirect URLs to redirect to /wordpresslocation/index.php instead of /wordpresslocation/404.php, which is how you do it now):
[cc lang=’php’ ]
< ?php
$_SERVER['REQUEST_URI'] = substr(
$_SERVER['QUERY_STRING'],
strpos(
$_SERVER['QUERY_STRING'],
':80'
) +3
);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>
[/cc]
The archive – unFocus.Insensitivity
Update: Fixed the download link.
]]>