При создании даже персонального сайта, далеко не каждый может предусмотреть все возможные способы его дальнейшего использования. Очень важно подготовить почву для дальнейшего развития сайта. Если в прошлом вы создали сайт и по умолчанию присвоили всем страницам расширение .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'); ?>
Ну вот и всё, думаю какой-нибудь из вышеприведённых способов поможет.
а еще проще попросить хостера в httpd.conf Апача
добавить
AddType application/x-httpd-php .php .phtml .htm .html
и нет нужды использовать mod_rewrite
Да, конечно. Просто с AddHandler в .htaccess, mod_rewrite не нужен, и ждать хостера не понадобится. Главное AddType не прописывать в самом .htaccess 😉
Первый способ ИМХО лучше. После трех-шести месяцев можно просто удалить
—
RewriteEngine on
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
ДОПИСАТЬ надо к:
RewriteEngine on
RewriteRule ^(.*)\.html $1\.php
или это альтернатива? В тексте статьи двусмысленно написано: прописать следующее в том же самом .htaccess файле
Действительно двусмысленно. Вам стоит понимать это как два разных метода. Первый просто автоматом переписывает расширение страницы, а второй метод оставляет расширение HTML в покое, но даёт серверу команду выполнять PHP-код.
Также можно воспользоваться обоими методами.