Я наконец выясняю, как не разбирать дубликаты URL.
Прежде всего в config.php удалите суффикс, лучше никогда не используйте его:
$ config ['url_suffix'] = '';
Тогда в rout.php никогда не используйте символы подстановки и всегда используйте регулярные выражения.
То есть, если я использую:
$ route ['(: any) / (: num)'] = 'homepage / parser / $ 1 / $ 2';
это будет работать для всех следующих URL:
/a/10
/a/10/11
/a/10/11/12
и так далее!
Вместо того, чтобы:
$route['([\w_-]+)/(\d+)'] = 'homepage/parser/$1/$2';
это работает только для
/a/10
и
$route['([\w_-]+).html'] = 'homepage/parser/$1';
будет работать, только если ваши URL действительно заканчиваются на .html
Не повезло /a/10.html/ по-прежнему является дубликатом, поэтому мне нужно хотя бы одно правило .htaccess, чтобы удалить косые черты из URL
Мне действительно нужны уникальные URL-адреса, так что я думаю, что я прекращаю любую будущую разработку codeigniter для этого проекта, где я смешал url: 1) .html 2) каталоги 3) старые динамические URL-адреса
Вместо этого я выясняю, что для SEO purpouse, вероятно, лучше всего:
- использовать только страницы без расширений
- избегайте каталогов
Так что, если это так (другой мой проект), я просто использую простые URL в своем коде и регулярные выражения в rout.php.
Единственной проблемой является проблема дублирования косой черты, но этого можно избежать глобально с помощью этого .htaccess из этого другого решения:
Удалить косую черту, используя .htaccess, кроме домашней / целевой страницы