1

我正在创建一个社交网站,在那里我创建了自己的 PHP mvc,但我在 url 重写时遇到了问题。我的 mvc 就是这样工作的。

如果这是域www.example.com/manage/posts/11111manage是类,post是该类中的方法 & 1111是一个参数。

问题是我无法创建虚荣个人资料网址,因为它们不起作用。我希望每个用户都有虚荣的个人资料网址,即www.example.com/username但这将搜索一个名为username的类。

请告诉我如何

a) 我可以在不添加诸如 www.example.com/users/username 之类的任何内容的情况下实现诸如www.example.com/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>
4

2 回答 2

0

我不知道为什么所有人都试图构建自己的框架,有这么多非常好的框架可以关注安全性等等。但是好的,我认为你的问题是你的重写规则。

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

通常,您应该将所有输入重写到给定文件并解析 url 并调用您需要的控制器。为了更好地理解,请查看 Symfony2 路由组件。

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

于 2015-04-19T18:55:12.047 回答
0

您应该首先创建一个路由器来将您的 url 路由到控制器/类。我会更喜欢它klein routerFastRoute简单性。

放置路由器后做你想做的事:

(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();

**注意:**这只是路由器使用的基本表示

于 2015-07-23T17:43:01.767 回答