Конфигурация SSI в IIS 7

Я установил модуль ServerSideInclude на моем компьютере, и он отлично работает за одним исключением.

<!--#include virtual="meta.inc" -->

Строка выше вызывает проблему. Я знаю, что должен измениться virtual с file но у меня огромный сайт, и это означает, что я должен изменить как минимум 1000 строк кода, как это, и я ищу способ запустить virtual правильно в IIS 7.

Я искал это решение, но все, что я смог найти решение, которое я упомянул выше.

Знаете ли вы, как решить эту проблему, не меняя virtual в file

Благодарю.

3 ответа

У вас включены родительские пути на вашем сайте? Перейдите в раздел "ASP" вашего сайта в IIS и выберите "Включить родительские пути" в разделе "Поведение" и посмотрите, поможет ли это.

Параметр "Родительские пути" позволяет использовать ".." в вызовах таких функций, как MapPath, разрешая пути относительно текущего каталога с использованием обозначения..\. Если для этого свойства установлено значение True, это может представлять угрозу безопасности, поскольку путь включения может обращаться к критическим или конфиденциальным файлам вне корневого каталога приложения.

На самом деле это не ответ, а скорее подтверждение вашей проблемы. Но посмотрите один из возможных способов virtual может сработать для вас в конце моего ответа.

Из публикации в блоге MSDN IIS: Примечания по синтаксису включений на стороне сервера (SSI) (203064, пересмотренный вариант) (от 2010-12-28; применяется к версиям IIS с 4.0 по 7.5):


Дополнительная информация о файле и виртуальном синтаксисе

Директивы SSI, которые используют пути к файлам, могут ссылаться на файлы с помощью файла или виртуального пути.

  • Элемент file используется с файлами, относящимися к папке текущего документа. Следующий пример включает файл в текущей папке:
<!--#include file="myfile.txt"-->
  • Виртуальный элемент представляет пути относительно базовой папки веб-сервера. Следующий пример включает файл в виртуальной папке / scripts:
<!--#include virtual="/scripts/myfile.txt"-->

Вывод: file Атрибут используется для обозначения местоположения файла относительно текущего документа. Итак, если это то, что нужно в вашей ситуации, вам действительно нужно изменить virtual приписать file приписывать.

Однако есть одно возможное исключение. В статье " Включения на стороне сервера" в Википедии показан следующий пример:

<!--#include virtual="menu.cgi" -->

Это говорит мне о том, что virtual Путь к файлу необязательно начинать с /, При отсутствии ведущего /, расположение virtual Файл относится к базовой папке веб-сервера.

Итак, мне кажется, что file а также virtual Атрибуты могут вести себя одинаково, если упоминаемые файлы находятся в базовой папке (или подпапках базовой папки) веб-сервера.

SSI - это не ASP - это разные технологии.

Я обнаружил, что каждый раз, когда Microsoft выпускает новую версию любого из своих продуктов, иногда некоторые функции, которые работали в предыдущих версиях, работают по-разному или вообще не работают в новых версиях, и похоже, что эта проблема может быть одной из них.

Итак, вы можете подумать о переходе на Apache HTTPd (если можете), и тогда вам не нужно будет вносить все эти изменения в ваши файлы - я обнаружил, что Apache последовательно поддерживает SSI (и другие). технологии / модули, директивы конфигурации и т. д.) во всех версиях HTTPd, которые его поддерживают. Эта последовательность - одна из причин, почему мне действительно это нравится.

Другие вопросы по тегам