Вопрос маршрутизации URL Igniter (с использованием косой черты) - PullRequest
1 голос
/ 16 ноября 2009

Я новичок в codeIgniter.

Я очень внимательно отношусь к URL на сайтах, которые я разрабатываю. Можно ли создать такие URL-адреса? Как правило, сайты, которые я разрабатываю, имеют встроенный интерфейс администратора, а new, edit или delete добавляются в конце URL после слеша.

Вот несколько гипотетических примеров (один с URL-адресом администратора):

страницы верхнего уровня (без косой черты)

site.com/about
site.com/contact
site.com/contact/edit

списки индексов разделов (списки имеют косую черту)

site.com/blog/
site.com/products/
site.com/products/edit

страницы разделов (списки имеют косую черту)

site.com/blog/first-post
site.com/products/best-product
site.com/products/new
site.com/products/best-product/delete

раздел категории

site.com/blog/code-questions/
site.com/products/red-products/
site.com/products/red-products/delete

Первая проблема, которую я вижу, это отправка URL с косой чертой в другой контроллер, а не без него. Поскольку вы не можете добавить их в файл маршрутизации. Например, для страниц верхнего уровня, как узнать, как вызвать контроллер страниц? как мне отличить их от списков разделов? Я не могу добавить косую черту в rout.php!

site.com/about
site.com/blog/

то же самое с страницами раздела и категориями.

Обычно я делал это в прошлом с помощью файла .htaccess.

некоторые примеры того, как я структурировал файлы htaccess для URL в прошлом в моих собственных приложениях

RewriteRule ^new$ index.php?static&new
RewriteRule ^edit$ index.php?edit
RewriteRule ^([a-z0-9\-]+)$ index.php?static&post=$1
RewriteRule ^([a-z0-9\-]+)/edit$ index.php?static&edit=$1

RewriteRule ^([a-z0-9\-]+)/$ index.php?section=$1
RewriteRule ^([a-z0-9\-]+)/new$ index.php?section=$1&new
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)$ index.php?section=$1&post=$2
RewriteRule ^([a-z0-9\-]+)/([a-z0-9\-]+)/$ index.php?section=$1&category=$2

Есть ли в любом случае сделать это с codeIgniter? Должен ли я просто переписать правила поверх сгенерированных URL-адресов контроллера? Возможно ли это сделать с помощью файла routing.php? Если codeIgniter не делает этого, не могли бы вы предложить структуру, которая может?

Также Как мне использовать дефисы в URL при привязке к имени класса контроллера?

1 Ответ

2 голосов
/ 16 ноября 2009

CodeIgniter имеет довольно хороший способ обработки маршрутизации URI (http://codeigniter.com/user_guide/general/routing.html).

По умолчанию, если вы используете собственный .htaccess CodeIgniter (http://codeigniter.com/user_guide/general/urls.html), все запросы разбиты на красивые сегменты.

Вы можете легко использовать файл routing.php CodeIgniter для генерации этих URL, которые вам нужны. Пожалуйста, обратитесь к их очень легко следовать документации на http://codeigniter.com/user_guide/.

...