Требуется дополнительная помощь по перенаправлению .htaccess - PullRequest
0 голосов
/ 24 июля 2011

У меня есть несколько ссылок, которые нужно перенаправить ... Но есть только два вида этих ссылок:

  1. URL-адреса, такие как 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.

Можете ли вы помочь мне с этим, пожалуйста?

1 Ответ

1 голос
/ 24 июля 2011

Я не слишком уверен, что сам 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);

     }         
?>

Я опробовал его намой собственный сервер, и он работает просто отлично, так что, надеюсь, мне не удалось нанести ущерб коду при копировании его в текстовую область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...