URL-адрес URL-адреса

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

У меня возникают проблемы с 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 ответа

Вам нужно понять, как работают 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, вам нужно создать собственные маршруты для своего приложения. Подробнее об этом здесь.


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

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

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


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

http://localhost/user/something указывает, что вы вызываете метод something в классе User controller.

Это имеет смысл?


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

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

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

licensed under cc by-sa 3.0 with attribution.