Перейти к публикации

[для СЕО] генерация в реальном времени корректного robots.txt


Рекомендованные сообщения

В силу того, что отдел по СЕО-продвижению постоянно требовал вставить в файл robots.txt директивы Host и Sitemap на разнообразных сайтах -я решил пойти немного более простым путём и сделать универсальный генератор. Задумка была такова - добавить только требуемые директивы в уже существующий файл, находящийся в корне без боязни, что его захотят изменить в любой момент. Возможно - будет полезно кому-то ещё ;-)

 

И так, инструкция по установке:

создаём файл robots.php в корневой директории с содержанием:

<?php
$distr_charset = "utf-8";
header("Content-type: text/html; charset=".$distr_charset);
define('DATALIFEENGINE', true);
define('ROOT_DIR', dirname (__FILE__));
if(!file_exists(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."data". DIRECTORY_SEPARATOR ."config.php")) {
	echo iconv("windows-1251", $distr_charset, "Не найден файл конфигурации!");
	die();
}
if(!file_exists(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."engine.php")) {
	echo iconv("windows-1251", $distr_charset, "Не найден файл /engine/engine.php");
	die();
}
if(!file_exists(ROOT_DIR. DIRECTORY_SEPARATOR .".htaccess")) {
	echo iconv("windows-1251", $distr_charset, "Не найден файл /.htaccess");
	die();
}
if(file_exists(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."modules". DIRECTORY_SEPARATOR ."robots.php")) {
	echo iconv("windows-1251", $distr_charset, "Модуль robots уже установлен");
	die();
}
require_once(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."data". DIRECTORY_SEPARATOR ."config.php");
$robots = '<?php
if(!file_exists(ENGINE_DIR."/../robots.txt")) {
	die();
}
header("Content-Type: text/plain; charset=".$config["charset"]);
$file = file_get_contents($config["http_home_url"]."robots.txt");
$add = array();
if(stripos($file, "Host")===false) {
	$site = $config["http_home_url"];
	$site = str_Replace(array("https", "http", ":", "//"), "", $site);
	$site = explode("/", $site);
	$add[] = "Host: ".$site[0];
}
if(stripos($file, "Sitemap")===false) {
	$add[] = "Sitemap: ".$config["http_home_url"]."sitemap.xml";
}
if(sizeof($add)>0) {
	$file .= "\n\n".implode("\n", $add);
}
echo $file;
die();';

$if = @file_put_contents(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."modules". DIRECTORY_SEPARATOR ."robots.php", $robots);
if(!$if) {
	echo iconv("windows-1251", $config["charset"], "Невозможно записать модуль /engine/modules/robots.php");
	die();
}


$read = file_get_contents(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."engine.php");
if(strpos($read, 'include ENGINE_DIR . \'/modules/robots.php\';')===false) {
	$str = strpos($read, 'switch ( $do ) {')+16;
	$first = substr($read, 0, $str);
	$end = substr($read, $str);
	$if = @file_put_contents(ROOT_DIR. DIRECTORY_SEPARATOR ."engine". DIRECTORY_SEPARATOR ."engine.php", $first.'

	case "robots" :
		include ENGINE_DIR . \'/modules/robots.php\';
	break;
	'.$end);
	if(!$if) {
		echo iconv("windows-1251", $config["charset"], "Невозможно изменить /engine/engine.php");
		die();
	}
}


$file = file_get_contents(ROOT_DIR. DIRECTORY_SEPARATOR .".htaccess");
if(strpos($file, 'RewriteRule ^robots.txt$ index.php?do=robots [L]')===false) {
	$str = strpos($file, 'RewriteRule ^rules.html$ index.php?do=rules [L]');
	$first = substr($file, 0, $str);
	$end = substr($file, $str);
	$if = @file_put_contents(ROOT_DIR. DIRECTORY_SEPARATOR .".htaccess", $first.'
	RewriteRule ^robots.txt$ index.php?do=robots [L]
	'.$end);
	if(!$if) {
		echo iconv("windows-1251", $config["charset"], "Невозможно изменить /.htaccess");
		die();
	}
}

echo iconv("windows-1251", $config["charset"], "Успешно установили robots");

и открываем в браузере http://site.ru/robots.php где site.ru - адрес Вашего сайта.

После установки данной модификации - у Вас будет возможность в автоматическом режиме производить добавление директив Host и Sitemap для Вашего сайта без боязни смены домена или что-то в этом духе. Если есть пожелания - готов выслушать. Надеюсь подобное разработчики добавят в будущих релизах :-)

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...