Обрабатывать косую черту с помощью Codeigniter 3

У меня есть база статей со следующими URL:

person/albert-einstein/ (косая черта)

person/albert-einstein/1 (без косой черты)

И мне было интересно, как лучше всего справляться с косыми чертами URL в Codeigniter 3?

Это то, что я сделал / тестирую до сих пор:

echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1

Потом я отредактировал config.php установить:

$config['url_suffix'] = '/';

и снова напечатал URL-адреса:

echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein/
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1/
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1

Теперь я могу выбрать site_url() или же base_url() распечатать URL с косой чертой или без нее. Но теперь я должен быть очень осторожен с тем, какой из них я использую, и я бы предпочел использовать функцию, которая учитывает URL-адрес, который я передаю, и возвращать его с косой чертой, если он есть, или не добавлять его, если этого не происходит. иметь это.

И да, я определенно могу расширить помощник и написать такую ​​функцию: print_url() это делает то, что я хочу, но я хотел посмотреть, есть ли что-то, что я здесь упускаю. Спасибо.

1

Решение

Вы можете использовать правило перезаписи apache для принудительного завершения косой черты:

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Для удаления косой черты вы можете использовать:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]

Я использовал это хорошая база из .htaccess сниппеты.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]