(更新:我将这个问题转换为社区维基,因为答案似乎比我想象的更主观.根据一个人的需要,有多个答案.) 如果我有一个只包含application.cfc和index.cfm的文件夹,那么处理动态生成的URL的快速
如果我有一个只包含application.cfc和index.cfm的文件夹,那么处理动态生成的URL的快速,可靠的方法是什么?即没有相应物理.cfm文件的URL.
此示例url生成404,但它应该在db中查找页面并通过index.cfm返回它:
http://www.myserver.com/cfdemo/mynewpage.cfm
我应该在application.cfc中使用onMissingTemplate()来处理丢失的文件吗?由于此方法不处理onRequestStart(),onRequest()和onRequestEnd(),我想知道是否应该避免它.
或者,我可以设置一个ISAPIRewrite规则,因为我使用IIS(或Apache上的mod_rewrite)
# IF the request is not /index.cfm, doesn't exist and ends in cfm or html, # rewrite it. Pass the requested filename $1.$2 as the 1st param: cgi.page # append the remaining url params $4 ($3 is the ?) RewriteCond %{SCRIPT_NAME} ^(?!/index.cfm)(.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^\/(.*)\.(cfm|html)(\??)(.*)$ /index.cfm?page=$1.$2&$4 [I,L]
这些方法是否合适,还是我错过了实现这一目标的更好方法?似乎Coldfusion应该在application.cfc中内置这种类型的功能.也许我只是错过了它.
在Web服务器级别上重写url没有错.我会为此投票.