Я не слишком уверен, что сам mod_rewrite может конвертировать слова в их заглавные версии и не переключать %20
в -
- однако вы можете перенаправить на строчную версию страницы и позволить PHP установить записьпрямо.
Насколько я знаю, RewriteMap способен конвертировать только полный URL-адрес либо в верхний, либо в нижний регистр ... поэтому вам, вероятно, придется придерживаться моего предложения выше.
Код для этого будет следующим:
^category/([a-z\-\ ]+)(/)?$ index.php?category=$1 [NC,L]
... и в php вы захотите сделать следующее:
<?php
//Get the category
$cat = ( isset($_GET['category']) )? $_GET['category'] : '';
//Check if we need to convert the url
if( ($cat != '') && (strpos($cat, ' ') !== false) || !ctype_upper($cat[0]) ) {
//$new_category = Word-Number-One
$new_category = str_replace(' ', '-', ucwords($cat));
//Redirect to the new URL
header('Location: http://' . $_SERVER['SERVER_NAME'] . '/category/' . $new_category);
}
?>
Я опробовал его намой собственный сервер, и он работает просто отлично, так что, надеюсь, мне не удалось нанести ущерб коду при копировании его в текстовую область.