我有一堆必须重定向的链接...但是这些链接只有两种:
http://mydomain.com/category/new%20york
等网址应重定向到http://mydomain.com/category/New-York
,因此,每个空格(或%20
)都应为“减号”,首字母应为大写字母(在类别名称)。
http://mydomain.com/category/california
应为http://mydomain.com/category/California
,因此首字母必须为大写字母。
当然,如果是http://mydomain.com/category/New%20York
,则应为http://mydomain.com/category/New-York
。
你能帮帮我吗?
答案 0 :(得分:1)
我不太确定mod_rewrite本身可以将单词转换为大写版本,也不能将%20
转换为-
- 但是你可以重定向到页面的小写版本,然后让PHP直接创造了记录。
据我所知,RewriteMap只能将整个网址转换为大写或小写......所以你可能不得不按照我的建议去做。
该代码如下:
^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);
}
?>
我已经在我自己的服务器上试过了它并且运行得很好,所以希望在将代码复制到textarea时我没有设法削弱代码。