URL-адрес кодового указателя - PullRequest
4 голосов
/ 29 июня 2011

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

У меня проблемы с URL.

http://localhost/index.php/user совпадает с http://localhost/ но http://localhost/index.php/user/something отличается от http://localhost/something

Как мне заставить http://localhost/something работать?

Должно ли это быть http://localhost/user/something, как мне заставить это работать?

Ответы [ 4 ]

2 голосов
/ 29 июня 2011

Вам необходимо понять, как работают URL-адреса CodeIgniter.

  • URL-адрес состоит из нескольких сегментов.http://localhost/index.php/user/something/thing В этом примере user, something и thing являются сегментами URL.

  • Сегменты URL указывают, какой контроллер и какой метод этого контроллера будет работать,http://localhost/index.php/user/something/thing В этом примере вызывается метод something из контроллера user, и thing передается этому методу в качестве параметра.

  • Первый сегмент URL указываетконтроллер.

  • Второй сегмент URL указывает метод этого контроллера.

  • Следующие сегменты отправляются этому методу в качестве параметров.

Но есть некоторые значения по умолчанию.

  • Если ваш URL-адрес http://localhost/index.php/something, в качестве контроллера указано something, нопоскольку вы не указали никакой метод, вызывается метод по умолчанию index.Таким образом, приведенный выше URL-адрес совпадает с http://localhost/index.php/something/index

  • Если ваш URL-адрес http://localhost/index.php/, у вас не указаны сегменты (нет контроллера и метода).Таким образом, контроллером по умолчанию, который указан в application\config\routes.php, является загруженный контроллер.Какой метод этого контроллера будет вызван?Конечно, метод index.

    - Вы можете установить контроллер по умолчанию, изменив $route['default_controller'] = "site"; на то, что подходит вашему приложению в файле application\config\routes.php.

  • Если вы хотите, чтобы http://localhost/user/something был таким же, как http://localhost/index.php/user/something, вам нужно создать собственные маршруты для вашего приложения.Подробнее об этом здесь .

1 голос
/ 29 июня 2011

Чтобы заставить http://localhost/something работать, вам нужен контроллер с именем something с методом index.Это то же самое, что и доступ к http://localhost/something/index.

. Альтернативно, http://localhost/user/something подразумевает, что у вас есть контроллер user с методом, называемым something.

Помогает ли это вообще?

1 голос
/ 29 июня 2011

http://localhost/something указывает, что вы вызываете метод индекса класса контроллера Something

http://localhost/user/something указывает, что вы вызываете метод что-то в классе контроллера пользователя.

Имеет ли это смысл?

0 голосов
/ 29 июня 2011

Чтобы удалить index.php из вашего URL, вы должны использовать метод mod_rewrite, описанный здесь

Затем, чтобы удалить имя контроллера (пользователя) из URL, вам нужно использовать маршруты

В вашем случае вы добавили бы $route['^(something|something_else|etc)(/:any)?$'] = "user/$0"; в ваш файл rout.php

...