Я создаю сайт с помощью CodeIgniter. У меня есть URL-адрес типа http://mysite.com/albums/MJ/Dangerous.html, где MJ - имя исполнителя, а Dangerous - название альбома. Оба они являются динамическими и извлекаются из базы данных.
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
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, которые не имеют /, работают нормально.
Get Rich or Die Tryin'/The Massacre.html
/
Попробуйте двойное URL-кодирование названия альбома (т.е. urlencode(urlencode($album))).Я пытался передать URL один раз контроллеру CodeIgniter, и это постоянно доставляло мне неприятности.Так что я просто дважды закодировал его, а потом он выскочил с другой стороны без проблем.Затем я запустил urldecode () для переданного параметра.
urlencode(urlencode($album))
Дайте мне знать, поможет ли это вам.
encode значение перед передачей
encode
$value = str_replace('=', '-', str_replace('/', '_', base64_encode($album)));
decode значение после получения
decode
$value = base64_decode(str_replace('-', '=', str_replace('_', '/', $value)));
В соответствии с текущей тенденцией 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
Вы захотите urlencode название альбома, когда данные извлекаются из модели, чтобы избежать черной косой черты.
Вам необходимо использовать экранированную 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