Как удалить имя контроллера и функции из URL в CodeIgniter

#php #.htaccess #url #codeigniter

#php #.htaccess #url #codeigniter

Вопрос:

У меня возникла серьезная проблема с одним приложением, разработанным в CI. В настоящее время мои URL-адреса выглядят так

http://www.example.com/content/index/mission/

Я хочу удалить /content/index/ из URL, поэтому он должен выглядеть примерно так.

http://www.example.com/mission

У меня также есть метод маршрутизации и .htaccess. Но, похоже, ничего не работает.

Вот мой файл .htaccess

 Options  FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index.php|images|css/js/style/system/feature_tab/robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [QSA,L]
  

Я также пробовал маршрутизацию CI, определяя перенаправители в config/router.php Но это не сработало 🙁

Комментарии:

1. убедитесь, что вы mod_rewrite включили и установили AllowOverride значение All в конфигурации apache. (При условии, что вы правильно создали маршруты в routes.php )

Ответ №1:

Для вашего конкретного примера вы захотите создать маршрут (в application/config/routes.php ), который отображает

 $route['mission/']
  

Для

 "content/index/mission"
  

Другими словами, $route['mission/'] = "content/index/mission";

См. Документацию CI, касающуюся маршрутизации URI, для получения дополнительной информации

Комментарии:

1. Теперь я удалил завершающую косую черту из $route[‘mission/’], и это приводит меня на домашнюю страницу.

2. @Salman: У вас есть что-нибудь важное, что вы можете опубликовать из своего файла .htaccess? http://www.example.com/content/index/mission/ не дает вам 404, правильно?

3. Да, это не дает мне ошибку 404. Я отредактировал свой вопрос, и теперь у него также есть мой файл .htaccess. Спасибо за ваши быстрые ответы 🙂

4. Что произойдет, если вы удалите свой .htaccess (однако сохраните косую черту в $route['mission/'] конце) и попробуете http://www.example.com/index.php/mission ?

5. @SalmanAslam: Есть ли у вас какие-либо другие правила маршрутизации, определенные в routes.php ? Если да, можете ли вы опубликовать их?

Ответ №2:

Вы можете перейти в application/config/routes.php и установите свои собственные правила маршрутизации URL-адресов. (т. Е. Используйте что-то совершенно отличное от контроллера / функции). Должен быть массив с именем $route, который позволяет вам назначать сопоставления url => контроллер / функция. Надеюсь, это поможет.

Ознакомьтесь с этим руководством, оно вам подходит:

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