Как я могу загрузить страницу, используя контроллер Codeigniter? - PullRequest
0 голосов
/ 28 марта 2012

Я сделал вид CMS с использованием CodeIgniter.Он загружает содержимое страницы из базы данных в зависимости от текста slug, переданного в параметре URL, например, about, services, contact.

В коде контроллера я переназначил метод index, чтобы взять слаг в качестве параметрак этому как методы индекса по умолчанию не позволяют параметры.Проверьте код моего page контроллера по ссылке ниже:

http://pastebin.com/MwsVzRwQ

Как это работает, я установил page контроллер для загрузки по умолчанию.Поэтому каждый раз, когда я открываю свой сайт следующим образом

http://www.mysite.com

, он загружает контроллер следующим образомк нему он загружает содержимое страницы этого слага из базы данных, например:

http://www.mysite.com/page/about http://www.mysite.com/page/portfolio

Если мы не передаем слаг, он загружает домашнюю страницу.

Теперь я хочу, чтобы этот текст «страницы» не появлялся в URL.Таким образом, страницы должны открываться следующим образом:

http://www.mysite.com/about

http://www.mysite.com/portfolio

Полагаю, это станет возможным благодаря перезаписи URL.Я уже сделал переписывание URL для удаления index.php из URL, что обычно делается для всех сайтов Codeigniter.Ниже приведен код моего файла .htaccess

RewriteEngine on

RewriteCond $1 !^(index\.php|uploads|fckeditor|assets|robots\.txt)

RewriteRule ^(.*)$ /jobsite/index.php/$1 [L]

Теперь вопрос, как я могу заставить URL работать так

http://www.mysite.com/about

http://www.mysite.com/portfolio

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

Просто добавьте это в файл config / rout.php:

$route[':any'] = 'your_controller';

Затем в * your_controller * вы можете получить доступ к сегменту URI с помощью:

$this->uri->segment(1);

Как только у вас есть сегмент URI, вы можете запросить его у БД и отправить данные на ваше рассмотрение. Если сегмент URI пуст, загрузите домашнюю страницу.

0 голосов
/ 28 марта 2012

ОК, так что я хотел бы сделать то, что предлагает yRosen, с небольшими отличиями и как указано в правильном порядке:

Сначала ваш админ-контроллер, а затем все остальное:

$route['admin_panel/user_manager/(:any)'] = "admin_panel/user_manager/$1";
$route['admin_panel/pages_manager/(:any)'] = "admin_panel/pages_manager/$1";
$route['admin_panel'] = "admin_panel";

$route['(:any)'] = "pages/$1";

Еще одна вещь, которую я обычно рассматриваю, когда создаю сложный сайт или слишком много играю с URL-адресами, это помещает администратора на отдельный хост. Вы резервируете "www.myhost.com" для публичной стороны и используете "admin.myhost.com" для административной части. Конечно, тогда потребуется установка 2 CI и небольшое дублирование моделей, но это может сэкономить время и повысить безопасность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...