SSI включает виртуальный относительный путь, который не работает

Мой веб-сайт настроен на использование SSI, и он отлично работает.

Однако, когда я пытаюсь включить файл через SSI, это не сработает, поскольку я использую относительный путь. Например, следующие работы

<html>
    <head>
        <!--#include virtual="include/head.shtml" -->
    </head>
</html>

Но это не так (предположим, что файлы существуют)

<html>
    <head>
        <!--#include virtual="../include/head.shtml" -->
    </head>
</html>

Есть ли что-то, что я упускаю, или есть способ получить больше информации об этой ошибке.


person David Milanese    schedule 03.11.2015    source источник


Ответы (2)


Согласно руководству по Apache:

Элемент include может определять, какой файл следует включать либо с атрибутом file, либо с атрибутом virtual. Атрибут file — это путь к файлу относительно текущего каталога. Это означает, что он не может быть абсолютным путем к файлу (начиная с /) и не может содержать ../ как часть этого пути. Атрибут virtual, вероятно, более полезен и должен указывать URL-адрес относительно обслуживаемого документа. Он может начинаться с символа /, но должен находиться на том же сервере, что и обслуживаемый файл.

Согласно Википедии:

«virtual» указывает цель относительно корня домена, а «file» указывает путь относительно каталога текущего файла.

person Valentin Podkamennyi    schedule 28.12.2015
comment
Я получаю эту ошибку. Меня смущает то, что путь .../assets/reference_editable_forms/js. этого файла не существует. [Вторник, 29 декабря, 13:28:14 2015] [ошибка] [клиент :: 1] не удалось включить файл ../../include/head.shtml в проанализированный файл /Applications/MAMP/htdocs/TO/assets/reference_editable_forms /current_employed.html [Вторник, 29 декабря, 13:28:14 2015] [ошибка] [клиент ::1] Файл не существует: /Applications/MAMP/htdocs/TO/assets/reference_editable_forms/js, реферер: localhost:9988/TO/assets/reference_editable_forms/ ... - person David Milanese; 29.12.2015
comment
Полный путь к файлу head.shtml: /Applications/MAMP/htdocs/TO/include/head.shtml? - person Valentin Podkamennyi; 29.12.2015
comment
Да. Во всяком случае, на этой машине. - person David Milanese; 29.12.2015

Включения на стороне сервера обрабатываются только тогда, когда файл загружается с веб-сервера, то есть когда вы просматриваете веб-страницы в своем браузере, вызывая их с URL-адреса (например, http://....). При просмотре веб-страниц на рабочем столе вы не увидите включений.

Шрифт: http://www.easywebtutorials.com/tutorials/ssi.html

person guizo    schedule 21.07.2016