(Обновление: я преобразовал этот вопрос в вики сообщества, поскольку ответ кажется более субъективным, чем я думал. Существует несколько ответов в зависимости от потребностей.)
Если у меня есть папка, содержащая только application.cfc и index.cfm, какой быстрый и надежный метод для обработки динамически генерируемых URL-адресов? то есть URL, которые не имеют соответствующего физического файла .cfm.
В этом примере url генерирует 404, но он должен найти страницу в БД и вернуть ее через index.cfm:
http://www.myserver.com/cfdemo/mynewpage.cfm
Должен ли я использовать onMissingTemplate () в application.cfc для обработки отсутствующего файла? Поскольку этот метод не обрабатывает onRequestStart (), onRequest () и onRequestEnd (), мне интересно, следует ли этого избегать.
С другой стороны, я мог бы установить правило ISAPIRewrite, так как я использую IIS (или mod_rewrite на Apache)
# 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. Может быть, я просто скучаю по нему.