Обрабатывать косую черту ('/') в URL CodeIgniter - PullRequest
1 голос
/ 07 ноября 2011

Я создаю сайт с помощью CodeIgniter. У меня есть URL-адрес типа http://mysite.com/albums/MJ/Dangerous.html, где MJ - имя исполнителя, а Dangerous - название альбома. Оба они являются динамическими и извлекаются из базы данных.

В базе данных есть несколько альбомов с косой чертой ('/'). Таким образом, такой URL становится http://mysite.com/albums/50-cent/Get+Rich+or+Die+Tryin%27%2FThe+Massacre.html. При декодировании получается как http://ringtones/albums/50-cent/Get Rich or Die Tryin'/The Massacre.html. Здесь исполнитель 50-cent и название альбома Get Rich or Die Tryin'/The Massacre

У меня вопрос: что мне сделать, чтобы я получил полное название альбома, то есть Get Rich or Die Tryin'/The Massacre.html как один аргумент с символом косой черты? В настоящее время CodeIgniter показывает ошибку как «Страница не найдена», когда я нажимаю на такой URL. Все остальные URL, которые не имеют /, работают нормально.

Ответы [ 5 ]

3 голосов
/ 15 ноября 2011

Попробуйте двойное URL-кодирование названия альбома (т.е. urlencode(urlencode($album))).Я пытался передать URL один раз контроллеру CodeIgniter, и это постоянно доставляло мне неприятности.Так что я просто дважды закодировал его, а потом он выскочил с другой стороны без проблем.Затем я запустил urldecode () для переданного параметра.

Дайте мне знать, поможет ли это вам.

1 голос
/ 03 июля 2018

encode значение перед передачей

$value = str_replace('=', '-', str_replace('/', '_', base64_encode($album)));

decode значение после получения

$value = base64_decode(str_replace('-', '=', str_replace('_', '/', $value)));
0 голосов
/ 10 сентября 2014

В соответствии с текущей тенденцией SEO нет необходимости вносить цитату в URL или получать на странице.вместо этого во время сохранения (в поле типа шлака) и извлечения вы можете использовать этот тип опции.

$base_url = "http://ringtones/";
$controller = "albums";

$artist = "50 cent";
$album = "Get Rich Or Die Tryin' / The Massacre";

$link1 = $base_url.$controller.'/'.url_title($artist,'-',TRUE).'/'.url_title($album,'-',TRUE);
echo $link1;

Результат:

http://ringtones/albums/50-cent/get-rich-or-die-tryin-the-massacre
0 голосов
/ 07 ноября 2011

Вы захотите urlencode название альбома, когда данные извлекаются из модели, чтобы избежать черной косой черты.

0 голосов
/ 07 ноября 2011

Вам необходимо использовать экранированную HTML-версию символов в вашем URL ...

См. Ссылку ниже.

http://www.theukwebdesigncompany.com/articles/entity-escape-characters.php

После кодирования HTMLВаш URL должен выглядеть примерно так:

http://ringtones/albums/50-cent/Get Rich or Die Tryin'/The Massacre.html

Надеюсь, это поможет!

N

...