【发布时间】:2011-12-28 20:42:07
【问题描述】:
我无法弄清楚 Zend 框架如何控制路由。我实际上是在尝试创建自己的控制器/路由类,编写与 Zend 推荐的相同代码,以便 .htaccess 重写到位于网站根目录中的 index.php:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
我不明白的行是最后一行。它没有捕获组和 $ 变量。在 index.php 中,我无法在 $_GET 中捕获任何内容,它是空的。唯一可行的方法是:
RewriteRule ^(.*)$ index.php?uri=$1 [NC,L]
然后解析 $_GET['uri'],对我来说它的格式是“controller/action/param1/param1value”。
但最好绕过这个而不使用“uri”变量。在 Zend 项目中,这很有效。有人可以解释一下 Zend 是如何通过这种重写来解析 URL 的吗?
【问题讨论】:
标签: php zend-framework mod-rewrite