При создании даже персонального сайта, далеко не каждый может предусмотреть все возможные способы его дальнейшего использования. Очень важно подготовить почву для дальнейшего развития сайта. Если в прошлом вы создали сайт и по умолчанию присвоили всем страницам расширение .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-код.
Также можно воспользоваться обоими методами.