Использование PHP в страницах с расширением html, не работает php на хостинге.

Использование PHP в страницах с расширением html

П ри создании даже персонального сайта, далеко не каждый может предусмотреть все возможные способы его дальнейшего использования. Очень важно подготовить почву для дальнейшего развития сайта. Если в прошлом вы создали сайт и по умолчанию присвоили всем страницам расширение .html , а только потом решили использовать PHP, то тогда читайте дальше.

Раньше для использования SSI, названия страниц сайта должны были заканчиваться расширением .shtml , но сегодня большинство интернет-серверов сконфигурированы так, что SSI можно использовать и на страницах с расширением .html , что весьма удобно. С PHP совсем другая история — расширение .php является расширением по умолчанию. Разработчики сайтов, заранее зная, что будет использоваться данный язык программирования, стразу присваивают правильное расширение.

Но что делать, когда все страницы заканчиваются расширением .html ?

Заменяем расширение HTML на PHP

Это можно сделать несколькими способами. Самый явный способ — дать всем страницам расширение .php или изменить уже существующие расширения (.html, .shtml и т.д.). У этого способа есть недостатки. Например уже проиндексированным страницам с расширением .html придётся заново индексироваться поисковыми системами. Или ещё хуже — все внешние ссылки, которые ссылаются явным образом на ту или иную страницу, будут недействительны. И придется оповещать владельцев каждого сайта об этих изменениях и создавать для каждой страницы еще одну страницу с 301 ошибкой. Конечно, изменить одно расширение на другое допустимо, но что делать если сайт уже имеет много страниц и много ссылок на разные страницы с других сайтов?

По осознанной причине на данный момент все страницы этого сайта заканчиваются расширением html, и мне никак не хотелось делать вышеприведённые изменения, тем самым создавая себе лишние трудности.

Можно обойтись и другим способом. Если сервер, на котором размещается сайт, поддерживает mod_rewrite (в большинстве случаев поддерживает), и есть доступ к файлу .htaccess , то можно добавить следующие строки в этот самый файл:

Добавив этот код в .htaccess , можно не волноваться. Все запрашиваемые несуществующие страницы с расширением .html будут автоматически заменяться расширением .php благодаря чудесам от Apache. Но и этот способ является не единственным. Можно прописать следующее в том же самом .htaccess файле:

На мой взгляд самый удачный способ. Это делает HTML-страницы равными PHP-страницам, то есть все функции PHP теперь могут быть использованы на страницах с расширением HTML. Если нет доступа к файлу .htaccess , то можно написать письмо хостинг компании, и вежливо попросить админов прописать в конфигурации Apache ( httpd.conf ) нужное значение для сайта.

Кстати, если до этого на сайте использовалось SSI следующим образом:

то тогда в новом PHP’шном состоянии этот код нужно заменить на:

Ну вот и всё, думаю какой-нибудь из вышеприведённых способов поможет.

Всего оставлено 12 комментариев

а еще проще попросить хостера в httpd.conf Апача

AddType application/x-httpd-php .php .phtml .htm .html

и нет нужды использовать mod_rewrite

Да, конечно. Просто с AddHandler в .htaccess, mod_rewrite не нужен, и ждать хостера не понадобится. Главное AddType не прописывать в самом .htaccess

Первый способ ИМХО лучше. После трех-шести месяцев можно просто удалить

RewriteRule ^(.*)\.html $1\.php

И добавить на 404 ошибку скрипт, что будет перекидывать с html на php

в html (где не нужен php) не будет вызываться php (меньше нагрузка на сервак)

Rewrite не будет работать – меньше нагрузки.

Ну на знаю у 3 разных хостеров просил прописать что то в httpd.conf Апача ….

впечетление что они его как огня боятся

Хорошая статейка. Заказчик предоставил доступ на ftp. Смотрю – а там только .htm

Думал с ума сойду, пока весь код менять буду. А тут статейка. 2-й способ понравился. Как только сделал – сразу заработало.

Автору огромное спасибо!

RewriteRule ^(.*)\.html $1\.php — вот это просто спасло!

Отличная статья! Переделывать несколько сотен страниц это оч геморно, а тут одна строка в .htaccess и все работает в лучшем виде.

МДА…. прикольно спасибо Автору, жаль что я это раньше не прочитал.! несколько часов моей жизни потрачено впустую, переписанием ссылок на *php.

Огромнейшее спасибо автору, благо вовремя наткнулся на эту информацию и мне не пришлось как SiteDiz тратить несколько часов впустую )

AddHandler application/x-httpd-php .php .html .htm

ДОПИСАТЬ надо к:

RewriteRule ^(.*)\.html $1\.php

или это альтернатива? В тексте статьи двусмысленно написано: прописать следующее в том же самом .htaccess файле

Действительно двусмысленно. Вам стоит понимать это как два разных метода. Первый просто автоматом переписывает расширение страницы, а второй метод оставляет расширение HTML в покое, но даёт серверу команду выполнять PHP-код.

Также можно воспользоваться обоими методами.