简单的MVC mod-rewrite

Tor*_*rez 5 model-view-controller mod-rewrite

我不确定如何对模块化MVC结构进行mod-rewrite.我想要发生的是URL捕获:

http://domainname.com/index.php?model={model}&view={view}&parameters={parameters}

注意:参数将按特定顺序并由管道分隔(除非有更好的方法):parameters = param1 | param2 | param3

http://domainname.com/{model}/{view}/{parameters}

例:

http://domainname.com/faq/edit/13

另一个例子:

http://domainname.com/faq/index/{sort}/{page}/{search} http://domainname.com/faq/index/asc/3/How+to

基本上模型和视图之后的任何东西都可以作为参数; 尽可能多的.对于每个视图,我将了解区域允许的可能参数以及顺序.

先感谢您.

-

使用下面的代码就是我拥有的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*) index.php?model=$1&view=$2¶meters=$3 [L,NS]

URL:http://localhost:8888/testing/faq/index/asc/5/How+to
PHP $ _GET变量:

Array
(
    [model] => faq/index/asc
    [view] => 5
    [parameters] => How to
)

应该:

Array
(
    [model] => faq
    [view] => index
    [parameters] => asc/5/How to
)

请帮忙

ins*_* me 11

您可以使用PHP函数来执行此操作.很快,没有默认值或错误处理:

list( $controller, $function, $params ) = explode( '/', $uri, 3 );
$params = explode( '/', $uri );
Run Code Online (Sandbox Code Playgroud)

在.htaccess中,将任何不存在的查询重定向到PHP查询处理文件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ mvc.php [L,NS]
Run Code Online (Sandbox Code Playgroud)

请注意过滤您的输入,不要包含任何文件等.