说im使用.htaccess文件来获得外观整洁的链接,但我有一长串(比如20个)RewriteRules来做类似的事情
domain.com/user/adam --> domain.com/user.php?need=user&user=adam
domain.com/test.js --> domain.com/index.php?need=code&file=test.js
domain.com/test.js/edit --> domain.com/index.php?need=code&file=test.js&action=edit
在PHP中使用catch-all RewriteRule并在斜杠/解析和direct上进行拆分更好吗?还是"重写规则"的长列表更好?
更好,我想我的意思是更快,更健壮。我知道有了全包,保养会更好。
此外,你能推荐一篇php类的例子/文章来做这件事吗?
如果这回答了您的问题,那么使用大量重写规则列表是没有问题的。我看到重写规则填满了我的整个监视器,然后还有一些——除非你有问题,否则一个庞大的列表是没有问题的。
您可能想看看ZendRouter——即使您没有使用框架,您也可能想遵循他们的想法。
http://framework.zend.com/manual/en/zend.controller.router.html
本质上,.htaccess将所有请求路由到index.php文件,但与RegEx:匹配的请求除外
RewriteRule !'.(js|ico|gif|jpg|png|css|html)$ index.php
或者任何非文件/目录(尽管我认为检查文件/目录是否存在的成本略高,而不是regex所请求的URL)
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
一旦您利用了这种类型的路由,您就可以为URL定义一个标准正则表达式,以映射到控制器/操作