Разобрать HTML как PHP

Есть ли какие-либо проблемы с безопасностью/производительностью, если мы настроим веб-сервер Apache для обработки всех HTML как PHP? Я конкретно имел в виду:

AddType application/x-httpd-php .php .php3 .php4 .html

Я был в ситуации, когда мне нужно было добавить некоторую логику PHP в некоторые файлы HTML; в идеале мне не нужно было менять имя файла, например. с page.html по page.php (чтобы сохранить ранг страницы и т. д. для page.html).

Это связано со следующим вопросом: https://serverfault.com/questions/186821/httpd-addtype-directive

Правки: Судя по существующим ответам/комментариям ниже, сообщество предлагает либо использовать перенаправления, либо ориентироваться только на определенные HTML-файлы. Ограничение заключается в том, что я переделываю существующий сайт (более 400 HTML-страниц; каждая из них использует какой-то шаблон Dreamweaver, который извлекает верхний и нижний колонтитулы из разных файлов). Я надеялся полностью отказаться от Dreamweaver и перейти к чему-то непатентованному. Итак, у меня есть два варианта:

  1. Используйте включения на стороне сервера (SSI), чтобы вставить верхний и нижний колонтитулы. Это приведет к тому, что все мои файлы HTML будут украшены SSI.
  2. Добавьте фрагмент кода PHP, чтобы включить верхний и нижний колонтитулы. Для этого выбора я должен убедиться, что имя файла остается неизменным.

person moey    schedule 24.08.2011    source источник
comment
Рассматривали ли вы возможность вместо этого использовать перезапись URL-адресов?   -  person Oliver Charlesworth    schedule 25.08.2011
comment
не забывайте, что он будет читабельным, если вы случайно перенастроите т.е. забудь об этом   -  person Igoris Azanovas    schedule 25.08.2011
comment
У Оли есть хороший момент здесь. Переписать было бы очень безопасным (не говоря уже о простом) решением.   -  person Damien    schedule 25.08.2011
comment
Были бы некоторые дополнительные накладные расходы на синтаксический анализ файлов чистого html, но в остальном не должно быть никакой разницы ... ЕСЛИ бы некоторые из этих HTML-страниц не содержали PHP-код в качестве примеров в ситуации с типом «не выполнять». Теперь, когда файлы .html анализируются/выполняются как php-скрипты, этот пример кода также будет выполняться.   -  person Marc B    schedule 25.08.2011


Ответы (2)


Чем больше файлов сервер определяет, что ему нужно передать через интерпретатор PHP, тем больше накладных расходов, но я думаю, что это само собой разумеется. Если на вашем сайте нет НИ ОДНОЙ страницы с простым HTML, то вы уже платите все штрафы за производительность, которые могли бы заплатить — добавление HTML в список не отличается в данном случае от простого переименования всех файлы должны иметь расширение .php.

Настоящая потеря производительности наступит, если у вас есть простые HTML-страницы — сервер будет без необходимости передавать эти страницы PHP для интерпретации, когда в них нет необходимости. Но даже в этом случае это не драматично — интерпретатор PHP не понадобится для этих HTML-страниц, поэтому он ничего не сделает, кроме определения, что ему ничего не нужно делать. Это имеет свою цену, но она незначительна.

Теперь, если мы говорим здесь о больших объемах, каждая мелочь производительности имеет значение, и это не было бы практичным решением. Однако для сайтов с низким и средним объемом потери производительности будут нулевыми.

Если это разовое изменение и затронуто ограниченное количество файлов, то может быть более консервативным будет использовать директиву FilesMatch.

<FilesMatch "^(file_one|file_two|file_three)\.html$">
  AddType application/x-httpd-php .html
</FilesMatch>
person Chris Baker    schedule 24.08.2011
comment
Я вижу, вы также добавили FileMatch ;) Также +1, потому что мы все знаем, кто на самом деле поставил вам -1, не так ли? Верните услугу, если хотите. - person Amir Raminfar; 25.08.2011
comment
Я вернул услугу, но я не уверен, кто отрицает эти фактические ответы. Я не думаю, что какие-либо из ответов здесь явно ложны или даже опрометчивы - все они должны быть одобрены или не одобрены. Мех. :) - person Chris Baker; 25.08.2011

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

<FilesMatch "^file_name\.html$">
AddType application/x-httpd-php .html
</FilesMatch>

Это будет соответствовать только file_name.html и обрабатывать его как .php, где гораздо безопаснее сделать это, чем обрабатывать ВСЕ .html файлы как php.

person Amir Raminfar    schedule 24.08.2011