URL-адреса профиля тщеславия в php mvc не работают

Я делаю сайт социальной сети, где я создал свой собственный PHP mvc, но у меня проблемы с переписыванием URL. Мой mvc работает так.

Если это домен www.example.com/manage/posts/11111 , manage — это класс, post — это метод в этом классе. & 1111 — это параметр.

Проблема в том, что я не могу создать URL-адреса профиля тщеславия, так как они не будут работать. Я хочу, чтобы у каждого пользователя был URL-адрес тщеславного профиля, например www.example.com/username, но это будет искать класс с именем username.

Пожалуйста, посоветуйте мне, как

а) Я могу получить URL-адреса личного профиля, такие как www.example.com/username, не добавляя ничего, например www.example.com/users/username.

Я знаю, что есть другие PHP MVC, но я просто хочу использовать свой собственный

Это мой текущий код htaccess::

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/?$  index.php?ref_url=$1 [NC,L,QSA]
</IfModule>

person Joseph Nyambura    schedule 19.04.2015    source источник


Ответы (2)


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

RewriteRule ^(.*)$  index.php?ref_url=$1 [NC,L,QSA]

Обычно вы должны переписать весь свой ввод в заданный файл, проанализировать URL-адрес и вызвать нужный вам контроллер. Чтобы лучше понять, взгляните на компонент Symfony2 Routing.

http://symfony.com/doc/current/components/routing/introduction.html

person René Höhle    schedule 19.04.2015
comment
Я не понимаю, как работает этот фреймворк. Есть ли способ, которым вы можете объяснить, как я могу добиться этого простым способом. Пожалуйста, помогите мне. - person Joseph Nyambura; 23.04.2015

Сначала вы должны создать маршрутизатор для маршрутизации ваших URL-адресов к контроллерам/классам. Я предпочитаю klein router или FastRoute из-за их простоты.

После установки роутера делайте что хотите:

(Example)

$router=new Router;

$router->addroute("/[:username]",
   function(){ 
       //Bring UserAccount Details from DB using [:username]
   }
);

$router->addroute("/manage/posts/[:id]",
   function(){
       //Get Post details using [:id]
   }

$router->dispatch();

**Примечание:**Это только базовое представление об использовании маршрутизатора.

person Sreedev S B    schedule 23.07.2015