需要更多.htaccess重定向帮助

时间:2011-07-24 15:32:41

标签: regex .htaccess redirect

我有一堆必须重定向的链接...但是这些链接只有两种:

  1. http://mydomain.com/category/new%20york等网址应重定向到http://mydomain.com/category/New-York,因此,每个空格(或%20)都应为“减号”,首字母应为大写字母(在类别名称)。

  2. http://mydomain.com/category/california应为http://mydomain.com/category/California,因此首字母必须为大写字母。

  3. 当然,如果是http://mydomain.com/category/New%20York,则应为http://mydomain.com/category/New-York

  4. 你能帮帮我吗?

1 个答案:

答案 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时我没有设法削弱代码。