У меня есть база статей со следующими 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()
это делает то, что я хочу, но я хотел посмотреть, есть ли что-то, что я здесь упускаю. Спасибо.
Вы можете использовать правило перезаписи apache для принудительного завершения косой черты:
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
Для удаления косой черты вы можете использовать:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L]
Я использовал это хорошая база из .htaccess
сниппеты.
Других решений пока нет …