umade.ru

Использование 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 следующим образом:

<!--#include virtual="file.txt" -->

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

<? include('file.txt'); ?>

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

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

  1. Остров 23 июля 2004

    а еще проще попросить хостера в httpd.conf Апача
    добавить
    AddType application/x-httpd-php .php .phtml .htm .html

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

  2. Никита 23 июля 2004

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

  3. Tya 26 июля 2004

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

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

    И добавить на 404 ошибку скрипт, что будет перекидывать с html на php
    Плюсы:
    в html (где не нужен php) не будет вызываться php (меньше нагрузка на сервак)
    Rewrite не будет работать – меньше нагрузки.

  4. snow 22 мая 2007

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

  5. psp 8 августа 2007

    Хорошая статейка. Заказчик предоставил доступ на ftp. Смотрю – а там только .htm
    Думал с ума сойду, пока весь код менять буду. А тут статейка. 2-й способ понравился. Как только сделал – сразу заработало.
    Респект автору.:)

  6. Миклуха 13 декабря 2007

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

  7. dn 26 декабря 2007

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

    Автору респект

  8. Илья 5 января 2008

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

  9. SiteDiz 20 мая 2008

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

  10. Arhimedoffs 20 июля 2008

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

  11. Attorney 12 декабря 2008

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

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

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

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

  12. Никита 12 января 2009

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

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

Поиск по сайту

Следующая запись

Предыдущая запись

Из последнего

Архив статей и записей