#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 => контроллер / функция. Надеюсь, это поможет.
Ознакомьтесь с этим руководством, оно вам подходит: