Серверная сторона IIS не обрабатывает ColdFusion

Как использовать модуль включения на стороне сервера в IIS для включения и обработки файла ColdFusion из файла .htm? В настоящее время я делаю что-то подобное в своем html-файле:

<!--#include virtual="navmenu.cfm"-->

Сюда входит необработанное содержимое файла navmenu. Мне нужно, чтобы он выполнял код ColdFusion и возвращал выходные данные этого процесса, а не включал необработанный код ColdFusion.

Этот же синтаксис правильно работает в Apache.


person Mark    schedule 12.02.2010    source источник
comment
Если расширение файла верхнего уровня — .html, ColdFusion не будет обрабатывать содержимое файла .cfm.   -  person kevink    schedule 12.02.2010


Ответы (3)


Если вы не можете сделать так, чтобы верхняя страница выглядела как cfm для внешнего мира, подумали ли вы об использовании URL? Переписать модуль для IIS? Таким образом, вы могли бы просто сделать определенные файлы cfms с некоторыми явными правилами перезаписи htm в cfm, но оставить все остальные необработанными. Кроме того, я думаю, что элегантного ответа может не быть, поскольку вы смешиваете статический и динамический контент.

На ваш комментарий об ajax - лично я не нахожу ничего утомительного в использовании ajax, но опять же jquery вас портит...

 <div id='menuhere'></div>

 $.get('navmenu.cfm', function(data) {$('.menuhere').html(data); });

Выполняет то же самое, что и SSI плюс (при условии, что jQuery кэшируется), вы получаете более быструю загрузку страницы основного контента для загрузки.

person kevink    schedule 13.02.2010
comment
В итоге я остановился на этом решении, так как это был самый быстрый способ выполнить то, что мне было нужно. Это не лучшее решение для меня, потому что HTML-код ColdFusion, который я загружаю, - это навигация по странице. Для других обратите внимание, что большим недостатком этого решения является то, что никакие поисковые системы не получат доступ ко всему, что включено через ajax, что в данном случае является моей навигацией. - person Mark; 15.02.2010

Вы просто пытаетесь избежать расширения CFM в URL-адресе?

Вы не можете использовать SSI для включения файлов CFM в статический файл HTM. Вы можете настроить IIS для отправки файлов HTM на сервер CF для анализа. Это позволит вам использовать CFINCLUDE внутри любого файла HTM.

В качестве альтернативы вы можете использовать ajax из своего HTM-файла и загрузить проанализированное содержимое CFM в DIV.

person Adrian J. Moreno    schedule 12.02.2010
comment
Я бы поддержал это. Отправьте файл HTM в CF и используйте обычный cfinclude. В качестве альтернативы AJAX, поскольку SSI просто скопирует/вставит код в файл, что означает, что он выйдет как исходный код и не будет обработан. - person Andrew Backer; 12.02.2010
comment
Я перехожу с сервера linux/apache на сервер windows/iis. Заставить сервер CF анализировать все файлы .htm — не лучший вариант для нас. Опцию ajax было бы несколько утомительно реализовать. Неужели нет возможности выполнить аналогичную обработку в IIS? - person Mark; 12.02.2010
comment
Насколько я знаю, нет. Мне удобнее с Apache, чем с IIS, но как я понимаю, если IIS отправляет файлы HTM на сервер CF, это не очень сложно. Фактически, чтобы сервер CF не обрабатывал все эти статические файлы HTM, я знаю многих разработчиков, у которых IIS обрабатывает только файлы .HTML, поэтому они могут иметь расширение, отличное от CFM, которое все еще может быть динамическим. Вот инструкции для того, чтобы сервер CF анализировал расширение HTML с настройкой IIS или без нее: pbell.com/index.cfm/2007/3/31/ - person Adrian J. Moreno; 13.02.2010

Если вы используете страницу Coldfusion, это:

 <cfinclude template="navmenu.cfm">

Если вы используете другой тип страницы, вам нужно будет поместить этот контент в IFRAME.

<iframe src="navmenu.cfm"></iframe>

Вопрос в том, если у вас есть доступная технология Coldfusion на сервере, почему бы не изменить эту страницу на страницу .cfm и использовать приведенный выше пример?

person jarofclay    schedule 12.02.2010
comment
Я, возможно, был неясен. Файл, который необходимо включить, представляет собой файл .htm, для которого требуется синтаксис #include и модуль SSI (я только что отредактировал вопрос, чтобы лучше отразить это). Ваш ответ отлично сработает, если базовым файлом будет ColdFusion. - person Mark; 12.02.2010