Как включить другой код (строка меню или боковая панель), не меняя ваш Html на sHtml

Я хочу включить заголовок во многие веб-страницы. Поэтому я хочу создать один файл и включить его во все страницы. Есть один способ, который я нашел, - это SSI (включая серверную часть), но для этого требуется изменить расширение веб-страницы с Html на sHtml (что я не могу сделать из-за некоторых ограничений).

Есть ли способ сделать это без изменения расширения?


person rajnish    schedule 08.01.2013    source источник


Ответы (3)


В прошлый раз, когда я проверял (это было несколько лет назад), с Apache, если вы сделаете файлы html исполняемыми процессом httpd, они будут действовать как shtml, без необходимости их переименовывать.

Я оставляю последствия этого для безопасности на ваше усмотрение.

person GreyBeardedGeek    schedule 08.01.2013
comment
В настоящее время XBitHack является лучшим методом. Лучшие варианты в последние годы. - person donlaur; 09.01.2013
comment
Я посмотрел директиву XBitHack, и она звучит именно так, как я описал. Какая разница? - person GreyBeardedGeek; 09.01.2013
comment
Большая разница. Наличие всех файлов html в качестве SSI означает, что каждый файл должен запускаться с сервера как SSI. Использование типа Xbit помечает html-файлы как .shtml для сервера, чтобы они знали, какие файлы обрабатывать с помощью SSI. Если у вас всего несколько файлов, возможно, не будет большой разницы, но для больших сайтов с большим количеством файлов это может повлиять на время загрузки. - person donlaur; 09.01.2013

Вы можете использовать подход jQuery/AJAX

$.get('ajax/test.html', function(data) {
$('.result').html(data);
alert('Load was performed.');
});

Ссылка: http://api.jquery.com/jQuery.get/

person James A Mohler    schedule 08.01.2013
comment
Я пробовал это, он работает в IE, Safari, но не в Chrome и Mozzila. Я получаю эту ошибку Нулевой источник не разрешен Access-Control-Allow-Origin - person rajnish; 10.01.2013
comment
Это похоже на то, что вы пытаетесь сделать? stackoverflow.com/questions/3595515/ - person James A Mohler; 10.01.2013

Ваши лучшие методы - файлы PHP с включениями. SSI работает хорошо, но у вас должен быть файл .shtml.

Нерекомендуемые методы будут использовать iframe для включения заголовка. Javascript также можно использовать, но не рекомендуется использовать клиентскую часть. jQuery также будет включать клиентскую часть.

Вы можете настроить файлы .html для использования SSI, но если у вас есть ограничения, это, скорее всего, ограничение, которое вы не можете обойти. Учетные записи размещенных серверов не позволяют этого по большей части.

Документы Apache Server по SSI. http://httpd.apache.org/docs/current/howto/ssi.html

Чтобы разрешить SSI на вашем сервере, вы должны иметь следующую директиву либо в файле httpd.conf, либо в файле .htaccess:

Options +Includes Это сообщает Apache, что вы хотите разрешить разбор файлов для директив SSI. Обратите внимание, что большинство конфигураций содержат несколько директив Options, которые могут переопределять друг друга. Вам, вероятно, потребуется применить параметры к конкретному каталогу, в котором вы хотите включить SSI, чтобы гарантировать, что он будет оцениваться последним.

Не каждый файл анализируется на наличие директив SSI. Вы должны указать Apache, какие файлы следует анализировать. Есть два способа сделать это. Вы можете указать Apache анализировать любой файл с определенным расширением, например .shtml, с помощью следующих директив:

AddType text/html .shtml AddOutputFilter INCLUDES .shtml Одним из недостатков этого подхода является то, что если вы хотите добавить директивы SSI к существующей странице, вам придется изменить имя этой страницы и все ссылки на эту страницу, чтобы дайте ему расширение .shtml, чтобы эти директивы выполнялись.

Другой метод — использовать директиву XBitHack:

XBitHack на XBitHack указывает Apache анализировать файлы на наличие директив SSI, если в них установлен бит выполнения. Таким образом, чтобы добавить директивы SSI на существующую страницу, вместо того, чтобы менять имя файла, вам просто нужно сделать файл исполняемым с помощью chmod.

chmod +x pagename.html Краткий комментарий о том, чего делать нельзя. Время от времени вы будете видеть людей, рекомендующих вам просто указать Apache анализировать все файлы .html для SSI, чтобы вам не приходилось возиться с именами файлов .shtml. Эти люди, возможно, не слышали о XBitHack. Следует иметь в виду, что, делая это, вы требуете, чтобы Apache читал каждый файл, который он отправляет клиентам, даже если они не содержат никаких директив SSI. Это может немного замедлить работу, и это не очень хорошая идея.

person donlaur    schedule 08.01.2013
comment
В моем каталоге нет файла .htaccess, поэтому я создал новый файл и добавил следующие строки: =FILE.ssi--›, но он по-прежнему не работает. Пожалуйста, дайте мне знать, если я делаю что-то неправильно или что-то упускаю. - person rajnish; 10.01.2013