URI-маршрутизация в codeigniter - PullRequest
2 голосов
/ 19 мая 2010

Мой CI-сайт работает хорошо, за исключением того, что URL-адреса немного уродливы. Какой подход я должен использовать, чтобы дать мне возможность направить то, что отображается на:

http://domain.com/content/index/6/Planning

на URL:

http://domain.com/Planning

Я не уверен, должно ли это быть сделано в файле маршрутов или в моем .htaccess

Спасибо

Ответы [ 2 ]

4 голосов
/ 20 мая 2010

Есть несколько способов настроить config / rout.php, пригодность зависит от ваших требований.

  1. Маршрут для каждой страницы, если у вас есть только несколько страниц, которые вы хотите маршрутизировать:

    $route['Planning'] = 'content/index/6';  
    $route['Working'] = 'content/index/7';  
    // etc.
    
  2. Вы можете использовать запасной URL, который будет соответствовать после всех других правил маршрута - это означает, что вы должны установить правила, которые могут соответствовать этому правилу, перед правилом резервирования. Это также означает, что вы потеряли ID и должны запросить базу данных на основе заголовка:

    $route['register'] = 'register'; // this would match the fallback rule  
    $route['([a-z-A-Z1-9_]+)'] = 'content/index/$1'; // letters, numbers and underscore  
    // you'll receive "Planning" as parameter to Content::index method
    
  3. Или у вас может быть политика, согласно которой все URL-адреса содержимого должны начинаться с заглавной буквы, в этом случае вам не нужно беспокоиться о других правилах маршрута

    $route['([A-Z]{1}[a-z-A-Z1-9_]+)'] = 'content/index/$1';  
    // again, you'll receive "Planning" as parameter to Content::index method
    
  4. Вам все еще нужен числовой идентификатор, поэтому вам не нужно менять контроллер / модель:

    $route['(\d+)/[a-z-A-Z1-9_]+'] = 'content/index/$1';  
    // routes now look uglier: http://domain.com/6/Planning
    
0 голосов
/ 20 мая 2010

http://codeigniter.com/user_guide/general/routing.html

вы сможете достичь этого с помощью некоторых примеров на этой странице

...