Назад | Перейти на главную страницу

при включении SSI может ли включаемый файл быть перенаправлен в файл .htaccess

У меня есть несколько старых html-страниц, в которые включен SSI, чтобы включить определенный html на все страницы.

Итак, SSI выглядит примерно так:

<!--#include virtual="/includes/noNav/footercode.html"-->

Но я хочу переместить этот включенный файл из /includes/noNav/footercode.html в /includes/footercode.html, поэтому я реализовал перенаправление в файле .htaccess следующим образом:

# Redirect permanent /includes/noNav/footercode.html  http://intranet.myorg.org/includes/footercode.html

Но теперь я получаю сообщение об ошибке «Невозможно включить /includes/noNav/footercode.html» в проанализированный файл «Итак, перенаправления не работают с включенными файлами?

Кроме того, если я перейду прямо на старый путь, он правильно перенаправит меня. Но это не удается, если путь включен.

SSI анализируется как часть модуля apache SSI и не отправляет веб-запросы обратно в Apache для получения файла. Поскольку он не использует HTTP обратно в Apache для получения файлов, указанных в #include, правила перезаписи или перенаправления не применяются.

Директива virtual = находит файл, начинающийся с ServerRoot, а директива file = находит файл в том же каталоге, что и текущая страница.

То, что вы пытаетесь достичь, на самом деле можно сделать с помощью переписывает (с участием mod_rewrite) в отличие от перенаправления. Ваш .htaccess следует изменить на:

RewriteRule /includes/noNav/footercode.html   /includes/footercode.html

Файл по-прежнему будет доступен как /includes/noNav/footercode.html но содержание /includes/footercode.html будет обслуживаться. Имейте в виду, что вам нужно включить перезапись, если вы еще этого не сделали:

RewriteEngine on

И что имена некоторых переменных могут быть изменены, чтобы добавить REDIRECT_ к имени.