2012-04-04 2 views
0

я уже прочитал кучу статей на StackOverflow по этой теме, например:Почему мои маршруты не работают в CodeIgniter?

CodeIgniter: SEO friendly URLs

Codeigniter routes not working sometimes

И я клянусь, я настроил все правильно, но после того, как я поставил маршрут и сохранить мое приложение, и попытаться перейти на новый URL-адрес или даже старый, они оба дают мне ошибку 404.

У меня есть расширение, которое в настоящее время выглядит следующим образом:

поиск/map_view/графство

, что я хочу, чтобы выглядеть следующим образом:

карта/уезд

Я написал следующее перенаправление в файле routes.php, что дает мне ошибку 404:

$route['search/map_view/(:any)'] = 'map/$1'; 

И только в случае, если я делал это в обратном направлении, я тоже пытался это так:

$route['map/(:any)'] = 'search/map_view/$1'; 

Это ничего не делать, так что я вывел я сделал это неправильно. Примечательно, что у меня есть mod_rewrite от apache, меняющий мой url, чтобы удалить index.php из него. Не знаю, как это полезно, но я заметил это много в других сообщениях.

Я должен что-то изменить для чего-то еще? Я предполагаю, что если я набираю предыдущий адрес, я должен автоматически перенаправляться на новый? Или, если я набираю новый адрес, он должен работать автоматически? Я не знаю, это действительно раздражает ...

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

EDIT - Меня попросили включить дополнительную информацию. Вот.

Вот .htaccess, содержании

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 

В настоящее время у меня нет каких-либо пользовательских маршрутов, определенных в файле routes.php, только потому, что я не могу заставить его работать правильно.

Текущий контроллер - «Поиск», при этом метод «map_view» передается переменной «county». Таким образом, URL будет

http://www.base_url.com/search/map_view/county 

Я хочу изменить это

http://www.base_url.com/map/county 

Все остальное я ранее написал применяется до сих пор. Еще раз спасибо!

+0

Ваш маршрут здесь должен соответствовать фактическому маршруту. –

ответ

2

Вы хотите, чтобы ваш URL выглядел как карта/страна.

В вашей routes.php

$route['map/(:any)'] = 'search/map_view/$1'; 
$route['map'] = 'search/map_view'; 

И убедитесь, что ваше имя контроллера Search.php .Также имя класса Search, который расширяет CI_Controller и метод имя map_view()(должна быть общественная функция)

Look CI Controller Guide для подробная информация

+0

Спасибо за ваш ответ - я попробовал это - и я все еще получаю ошибку 404. Текущий контроллер называется «Поиск», и он определенно расширяет CI_Controller. Теперь он отлично работает, но я пытаюсь сократить мои URL-адреса для целей SEO. Метод, к которому он обращается в настоящее время, называется map_view. Если я создаю этот маршрут, и я хочу, чтобы он изменил «search/map_view/county», чтобы быть «map/county», мне нужен новый контроллер под названием «Карта»? Может быть, я просто не очень понимаю, как работает эта маршрутизация - мне кажется, что это способ сделать URL не совсем таким уродливым и более доступным ... – Jonathan

+0

отредактируйте главный пост и включите свои '.htaccess',' route.php' и 'Search controller' – safarov

+0

Проверьте http://codeigniter.com/user_guide/general/controllers.html – safarov

Смежные вопросы