Настройка SSI в IIS 7 - PullRequest
       44

Настройка SSI в IIS 7

1 голос
/ 01 декабря 2009

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

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

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

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

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

Спасибо.

Ответы [ 3 ]

1 голос
/ 01 декабря 2009

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

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

0 голосов
/ 19 августа 2014

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

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


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

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

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

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

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

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

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

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

0 голосов
/ 14 июля 2010

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

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

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

...