Как можно выдвинуть URI, как это в CodeIgniter (в настоящее время 1.7.1):
example.com/seg1/seg2/seg3/seg4/
или
example.com/seg1/seg2/
и т.д.. через единственный метод класса в контроллере, чье имя не появляется в URI? В обычном сценарии PHP я бы использовал mod_rewrite
примерно так:
RewriteRule ^([^/]+)/$ myfile.php?one=$1 [L]
RewriteRule ^([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2&three=$3 [L]
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/$ myfile.php?one=$1&two=$2&three=$3&four=$4 [L]
(Я тщательно очищаю и проверяю сегменты в PHP, возвращая 404, если недействительный)
Но в Codeigniter я не могу понять, как это сделать без жесткого кодирования, по крайней мере, первого сегмента, но затем, используя собственные маршруты, он все еще хочет рассматривать последующие сегменты как вызовы методов.
Я новичок в CI, но до сих пор сумел портировать через весь существующий сайт, за исключением этой его части. Я не вижу, как все части собираются вместе по этой проблеме, поэтому любые предложения приветствуются.
Разъяснение: я прочитал документацию по библиотеке URI, маршрутизации и т. Д. Перед началом моего проекта, и они были полезны для разных вещей, но эта конкретная проблема не решена ни одним из них. Я не вижу, как все сегменты URI могут быть по существу направлены через контроллер, который не назван в URI, и где все сегменты являются произвольными. Примеры маршрутизации предполагают, что вы знаете значение первого сегмента. Я уже знаю, как удалить «index.php», а также сегменты доступа.