2014-12-20 1 views
0

я пытаюсь добавить правило перезаписи в Htaccess, который перезаписывает структуру URL-адрес от:удаление пробелов и преобразование строчных букв в url? как?

example.com?user=laura&baked=cakes 

к:

example.com/user/laura/baked/cakes 

в то время как я сумел сделать это штраф, я обнаружил, что он делает не отображать пробелы должным образом в URL-адресе: т.е. baked/Lovely Chocolate Cake/ показан как baked/Lovely%20Chocolate%20Cake/. вещь, которую я пытаюсь добиться, - это переписать пробел (% 20) и сделать его - или + и превратить все в строчный. я сумел добраться до этого кода, следующего чтения на SO до сих пор:

RewriteRule ^/user/([a-z]+)/baked/([a-z\ .*A-Zx0-9-_]+)$ cakesmade.php?id=$1&baked=$2 

ваш вклад приветствуется. Язык htaccess кажется немного трудным для интерпретации.

+0

изменяющегося дела в нижний регистр требует изменений конфигурации Apache. У вас есть доступ к этому? – anubhava

+0

, если это файл htaccess, то да. – user3108623

+0

Нет, это конфигурация сервера Apache, вам нужно иметь доступ администратора, чтобы внести это изменение. – anubhava

ответ

0

Вы можете это сделать. в .htaccess (до фактического RewriteRule):

RewriteRule ^/user/.*[A-Z\ ] /linkChange.php?l=%{REQUEST_URI} [L] 

и linkChange.php:

<? 
    $link = $_GET['l']; 
    $newlink = strtr($link," ABCDEFGHIJKLMNOPQRSTUVWXYZ","-abcdefghijklmnopqrstuvwxyz"); 
    header("Location: http://www.example.com". $newlink,TRUE,301); exit; 
?> 
+0

спасибо croises. это полезно. с моим кодом правильная структура для второй скобки? 'RewriteRule ^/user/([az] +)/baked/([az \. * A-Zx0-9 -_] +) $ cakesmade.php? Id = $ 1 & baked = $ 2' и с кодом, который вы отправили , если весь url в нижнем регистре, я все еще хочу применить + или a - вместо пробела, должен ли код оставаться прежним? – user3108623

+0

Я просто добавляю 'A-Z' в код' .htaccess'. – Croises

+0

Вы можете использовать '[a-z. * 0-9 _-]' для второго теста в 'RewriteRule'. – Croises

 Смежные вопросы

  • Нет связанных вопросов^_^