» » PHP: Переносимые сайты. » Последние новости в RSS

PHP: Переносимые сайты.


Перенос сайта на новый домен или сервер иногда может создать достаточно проблем. Много головной боли может доставить то, что сайт не функционирует должным образом или просто не работает в своем новом "доме". Конечно, это может зависеть от различий в конфигурации сервера, которые находятся вне вашего контроля, но если при создании сайта заранее продумать процесс перемещения на новый домен, сервер или хост, то данный процесс можно сделать относительно безболезненным.

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

Домены
Друг как-то спросил, знаю ли я сценарий, который обрабатывал бы каждую веб-страницу и заменял определенный блок текста на другой (как функция блокнота "заменить"), и мне стало любопытно, зачем это нужно делать. Причиной было то, что его хостинг внезапно исчез, наряду с доступом к сайтам в домене, на котором они были зарегистрированы на его имя, то есть его единственным реальным вариантом было зарегистрировать новый домен и загрузить туда сайты из самой последней резервной копии. Проблема была в том, что на момент написания сайтов доменное имя было жестко запрограммировано в ссылках на каждой из страниц, например: старый-домен.com/страница, на каждой из более 30-ти страниц было по 10-12 ссылок.

Вероятность того, что это произойдет с вами, крайне мала, но вам, возможно, придется сменить домен по другим причинам, именно здесь PHP константы будут очень полезны.

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

Эти строки находятся в конфигурационном файле, который включается в каждой странице. Строки представляют собой три константы, одна для базы данных, другая для корневого каталога сервера по умолчанию, а третья для домена, которые выглядят примерно так:

define('LOCAL_BASE_URL', 'http://devbits.net/');


Эта строка просто присваивает значение http://devbits.net идентификатору LOCAL_BASE_URL, и любые ссылки внутри сайта, где требуется домен, будут запрограммированы следующим образом:

<a href="<?= LOCAL_BASE_URL ?>" /></a>


Теперь, если понадобится перейти на новый домен, можно просто обновить константу LOCAL_BASE_URL из конфигурационного файла, а не искать на каждой странице экземпляры старого домена.


Храните сложный код в одном месте
Другой метод облегчить перенос сайта на новое место, это сделать большинство страниц настолько простыми, насколько это возможно, т.е меньше использовать include и функции.

Это означает, что если вы захотите дублировать или переместить контент на другой сайт, он не будет повреждён из-за отсутствия какой-либо функции или страницы. Кроме того, чем меньше вам нужно редактировать файлы, которые содержат основу сайта и сложный код, тем лучше, поскольку уменьшается вероятность, что вы что-либо испортите.

Например, руководства, статьи и многие другие страницы содержат только обычный текст и некоторые элементы форматирования, такие как заголовки, абзацы и теги PRE для вставки кода. Все это обычный HTML, поэтому страницы можно легко загружать на другой сайт, сохранять их формат и отображать без ошибок.

Журнал ошибок

 

Чем больше и популярнее Ваш сайт, тем большую он будет иметь релевантность. Если точно знать, где искать подробности ошибок, возникающих на вашем сайте, а также время последнего изменения страницы или файла, это могло бы оказать неоценимую помощь при перемещении и обновлении сайта.  


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

Вот простая функция, похожая на ту, которую я использую для этих целей.

function write_sql_error($error_text){ # Сообщение, которое увидит пользователь  print "Приносим извинения! В базе данных возникла ошибку – повторите попытку позже."; # не убирайте комментарий если у Вас не определена переменная $debug  # if($debug) print "<!-- $error_text -->"; # LOCAL_DOC_ROOT & LOCAL_DATE_FORMAT это константы в файле конфигурации # Замените путь к корневому каталогу и форматы даты и времени 	  $log = fopen(LOCAL_DOC_ROOT.'/logfiles/error.log', 'a'); fputs($log, date(''.LOCAL_DATE_FORMAT.'', time()). ': ' .$error_text. ""); fclose($log);}


Затем функцию можно вызывать в запросах к базе данных:

QUERY or die(write_sql_error('Failed Query To: database_name - '.mysql_error().' : '.mysql_errno().''));


Далее приведена простая функция для записи последнего времени изменения страницы, которую можно вызвать на любой странице:

function last_mod() { # замените LOCAL_DATE_FORMAT на нужный формат даты и времени. print "<!-- Last Modified: ".date(LOCAL_DATE_FORMAT, filemtime($_SERVER['SCRIPT_FILENAME']))." -->";} 


Конечно, ничего не мешает вывести время изменения на страницу, чтобы его смогли увидеть пользователи.

 Не уничтожайте старые ссылки

Это больше для блага ваших пользователей, а не для вас, но со временем, скорее всего, дизайн вашего сайта будет меняться, и старые ссылки будут вести на несуществующие страницы. Например, вы можете решить переместить domain.com/about.php в domain.com/personal/about.php или domain.com/pics в domain.com/pictures.

В итоге поисковые системы обновят свои списки текущей версией страницы и правильными ссылками, но при этом останутся ссылки, которые размещены на других сайтах или форумах, отмечены пользователями или находятся в различных кэшированных файлах. Поэтому именно в данной ситуации вы должны рассмотреть использование функции Apache mod_rewrite, чтобы гарантировать, что пользователи не заблудятся и не получат сообщение об ошибке при поиске страницы.

Хороший способ проверить, делают ли пользователи запросы, это проверить статистику сайта или журнал ошибок на наличие страниц 404 (not found).

Вот несколько примеров записей из моих .htaccess файлов, которые перенаправляют запросы на старую страницу или имена файлов в текущее местоположение.

RewriteRule ^ref/(.*) resources/$1
RewriteRule ^tutorials/php/(.*) tutorials/php_mysql/$1

Директивы просто перенаправляют запросы для devbits.net/ref/что-либо – расположение страниц в старой версии сайта на devbits.net /resources/что-либо – текущее расположение страниц на сайте. Также запросы к каталогу tutorials/php перенаправляются к tutorials/php_mysql.

Внимание! Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.