Конфигурация 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, которые его поддерживают. Эта последовательность - одна из причин, почему мне действительно это нравится.