Использование PHP в страницах с расширением html
П ри создании даже персонального сайта, далеко не каждый может предусмотреть все возможные способы его дальнейшего использования. Очень важно подготовить почву для дальнейшего развития сайта. Если в прошлом вы создали сайт и по умолчанию присвоили всем страницам расширение .html , а только потом решили использовать PHP, то тогда читайте дальше.
Раньше для использования SSI, названия страниц сайта должны были заканчиваться расширением .shtml , но сегодня большинство интернет-серверов сконфигурированы так, что SSI можно использовать и на страницах с расширением .html , что весьма удобно. С PHP совсем другая история — расширение .php является расширением по умолчанию. Разработчики сайтов, заранее зная, что будет использоваться данный язык программирования, стразу присваивают правильное расширение.
Но что делать, когда все страницы заканчиваются расширением .html ?
Заменяем расширение HTML на PHP
Это можно сделать несколькими способами. Самый явный способ — дать всем страницам расширение .php или изменить уже существующие расширения (.html, .shtml и т.д.). У этого способа есть недостатки. Например уже проиндексированным страницам с расширением .html придётся заново индексироваться поисковыми системами. Или ещё хуже — все внешние ссылки, которые ссылаются явным образом на ту или иную страницу, будут недействительны. И придется оповещать владельцев каждого сайта об этих изменениях и создавать для каждой страницы еще одну страницу с 301 ошибкой. Конечно, изменить одно расширение на другое допустимо, но что делать если сайт уже имеет много страниц и много ссылок на разные страницы с других сайтов?
По осознанной причине на данный момент все страницы этого сайта заканчиваются расширением html, и мне никак не хотелось делать вышеприведённые изменения, тем самым создавая себе лишние трудности.
Можно обойтись и другим способом. Если сервер, на котором размещается сайт, поддерживает mod_rewrite (в большинстве случаев поддерживает), и есть доступ к файлу .htaccess , то можно добавить следующие строки в этот самый файл:
RewriteEngine on RewriteRule ^(.*)\.html $1\.php
Добавив этот код в .htaccess , можно не волноваться. Все запрашиваемые несуществующие страницы с расширением .html будут автоматически заменяться расширением .php благодаря чудесам от Apache. Но и этот способ является не единственным. Можно прописать следующее в том же самом .htaccess файле:
AddHandler application/x-httpd-php .php .html .htm
На мой взгляд самый удачный способ. Это делает HTML-страницы равными PHP-страницам, то есть все функции PHP теперь могут быть использованы на страницах с расширением HTML. Если нет доступа к файлу .htaccess , то можно написать письмо хостинг компании, и вежливо попросить админов прописать в конфигурации Apache ( httpd.conf ) нужное значение для сайта.
Кстати, если до этого на сайте использовалось SSI следующим образом:
то тогда в новом PHP’шном состоянии этот код нужно заменить на:
Ну вот и всё, думаю какой-нибудь из вышеприведённых способов поможет.
Как заставить html-страницы обрабатывать PHP код?
По умолчанию PHP-скриптами считаются лишь файлы с расширением .php и .phtml. Чтобы включить обработку PHP-кода в файлах с расширением .html или .htm, нужно добавить в файл .htaccess следующую директиву:
AddType application/x-httpd-php .html .htm
Если в нужной папке нет файла .htaccess, создайте его. Действие директив этого файла распространяется и на все вложенные папки.
Другие вопросы в разделе «PHP»
- Что такое PHP?
- Какая версия PHP работает на хостинге?
- Можно ли на разных сайтах использовать PHP разных версий?
- Как узнать текущие установки PHP?
- Какой путь к исполняемому файлу интерпретатора PHP?
- PHP установлен как модуль Apache или как CGI?
- PHP на вашем хостинге работает в режиме Safe Mode?
- Установлен ли у вас модуль РНР сURL?
- Как выключить отображение ошибок PHP?
- Какой размер оперативной памяти используется под PHP-приложения?
- Как увеличить объем загружаемого файла через скрипты?
- Почему вместо результатов работы PHP-скрипта я вижу лишь пустую белую страницу?
- Почему вместо результатов работы PHP-скрипта скачивается файл index.php?
- Можно ли устанавливать собственные настройки php.ini?
- Какие директивы php.ini можно настроить с помощью .htaccess?
- Как включить параметр allow_call_time_pass_reference?
- Как включить параметр register_globals?
- Возможно ли использовать функции для работы с IMAP в PHP?
- У вас установлен модуль ionCube?
- Как изменить часовой пояс на сайте?
- Как запустить PHP в режиме CGI?
- Общие вопросы о «Джино»
- Основные вопросы о «Джино»
- Оплата услуг
- Основные вопросы по хостингу
- Управление сайтом
- Работа с файлами
- FTP-доступ
- Задания по расписанию (cron)
- Доступ по SSH
- PHP
- CGI
- MySQL
- Общие вопросы по MySQL
- phpMyAdmin
- Joomla!
- osCommerce
- Invision Power Board
- MODX
- WordPress
- Основные вопросы по доменам
- Регистрация доменов
- Перенос доменов
- Домены .рф
- Основные вопросы
- Редактирование сайта
- Основные вопросы
- Настройка почтовых клиентов
- Почтовый интерфейс (WebMail)
Как заставить nginx интерпретировать html файлы как php?
Имеется сервер nginx+phpfpm.
Файлы с расширением .php отдаются нормально, а в файлах .htm/.html php-код отдается исходным текстом не транслируясь. Как заставить nginx транслировать html файлы с php-кодом?Оценить 7 комментариев
location ~ .php$ fastcgi_pass unix:/tmp/fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/siteru$fastcgi_script_name;
include fastcgi_params;
>Если прописать:
location ~ .(php|html)$ fastcgi_pass unix:/tmp/fastcgi.socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/siteru$fastcgi_script_name;
include fastcgi_params;
>то при открытии выходит ошибка Access denied даже если права на файл 777
Да, можете оформить как ответ.
Я правильно понял, что в конфиг php-fpm.conf необходимо в конец добавить строку:
security.limit_extensions = .php .html и после этого перезапустить php5-fpm? Я проделал это, но ошибка, увы, не ушла. Версия php-fpm 5.3.13. Конфиг правил по адресу: /etc/php5/fpm/php-fpm.conf
OS: Debian 6Подсказал в комментарии к вопросу, оформляю как ответ (для тех, кто столкнётся с этой проблемой).
1. nginx должен передавать html-файлы fastcgi-бэкенду. Для этого надо изменить Location, где прописана обработка php-файлов, либо добавить новый Location.
2. php-fpm по умолчанию отказывается обрабатывать файлы, оканчивающиеся НЕ на «.php»
В php-fpm.conf (или же в конфиг вашего пула, если у вас есть деление на пулы) средует добавить строку:
security.limit_extensions = .php .html
Помните, что это настройка безопасности. Будьте уверены, что подумали о возможных последствиях.Как подключить PHP к HTML?
PHP — это встраиваемый серверный язык программирования. Большая часть его синтаксиса заимствована из C , Java и Perl . А также добавлена пара уникальных характерных только для PHP функций . Основная цель этого языка — создание динамически генерируемых PHP HTML страниц .
PHP в HTML
При создании сложных веб-страниц вы столкнетесь с необходимостью объединить PHP и HTML для реализации конкретных задач. На первый взгляд это может показаться сложным, так как PHP и HTML являются двумя независимыми дисциплинами, но это не так. PHP предназначен для взаимодействия с HTML , и его код может быть включен в разметку страницы.
В HTML-страницы PHP-код включается с помощью специальных тегов. Когда пользователь открывает страницу, сервер обрабатывает PHP-код , а затем отправляет результат обработки ( не сам PHP-код ) в браузер.
HTML и PHP довольно просто объединить. Любая часть PHP-скрипта за пределами тегов игнорируется PHP-компилятором и передается непосредственно в браузер. Если посмотреть на пример, приведенный ниже, то можно увидеть, что полный PHP-скрипт может выглядеть следующим образом:
Приведенный выше код — это обычный HTML с небольшим фрагментом PHP , который выводит текущую дату, используя встроенную функцию date . При этом весь HTML будет игнорироваться PHP-компилятором и передаваться в браузер без изменений.
Интегрировать PHP в HTML действительно очень легко. Помните, что скрипт — это HTML-страница с включением определенного PHP кода . Можно создать скрипт, который будет содержать только HTML (без тегов ), и он будет нормально работать.