Codeigniter: Я хотел бы создать URL-адрес пользователя для моих пользователей, когда они создадут имя пользователя

Мне нравится создавать такой URL для моих пользователей, когда они регистрируют имя пользователя mysite.com/username

Я ищу много сообщений на этом сайте, и я вижу, как люди делают это, как это mysite.com/user/username

Я хотел бы избавиться от пользователя и просто перейти непосредственно к mysite.com/username

Какой был бы лучший способ для этого?

Я не знаком с CodeIgniter, но вот общий ответ, почему люди не используют mysite.com/username:

mysite.com/user/username – хорошее решение, потому что обычно диспетчер URL-адресов передает имя пользователя функции / модулю, который обрабатывает страницу пользователя.

mysite.com/username – плохое решение, потому что ваш диспетчер должен будет иметь жадное правило после всех ваших других правил, передать все остальные, что эти предыдущие правила, в модуль / функцию, которая обрабатывает страницу пользователей.

Теперь предположим, что вы хотите использовать mysite.com/username и предположите, что у вас есть mysite.com/logout, который приземляет пользователей на страницу выхода. Пользователь приходит и регистрируется с «logout» в качестве своего имени пользователя. Затем, как вы собираетесь говорить, обратившись к mysite.com/logout, г-н logout хочет выйти или хочет увидеть свою страницу?

Вы можете посмотреть маршруты:

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

Вы вводите маршруты в config / routes.php

В качестве примера:

$route['([a-zA-Z]+)'] = "main_controller/user_function/$1"; 

Но, как сказал @Nylon Smile выше, если вы попытаетесь использовать выход из системы, он попытается получить доступ к пользовательской странице выхода.

Вы можете сделать это, добавив элемент в массив $ route в 'config / routes.php':

 $route['([a-zA-Z0-9_-]+)'] = "user/index/$1"; 

Это отображает example.com/, независимо от функции «index» от «пользовательского» контроллера.

Да, будут конфликты, если у вас есть контроллер «logout» и пользователь с именем «logout». Вы можете решить эту проблему, добавив следующий элемент в массив $ route до вышеперечисленного:

 $route['logout'] = "logout"; 

И сохранение черного списка имен пользователей, которые включают в себя ваши контроллеры. Это потребует некоторого внимания, так что вы можете пойти с другими перечисленными здесь решениями, чтобы префикс в URL был указан как «пользователь /» перед их именем пользователя и избегать всего этого.