当前位置 : 主页 > 网页制作 > HTTP/TCP >

使用Coldfusion,您如何处理动态生成的URL?

来源:互联网 收集:自由互联 发布时间:2021-06-16
(更新:我将这个问题转换为社区维基,因为答案似乎比我想象的更主观.根据一个人的需要,有多个答案.) 如果我有一个只包含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没有错.我会为此投票.
网友评论