killserver 2 Опубликовано: 18 апреля 2017 Рассказать Опубликовано: 18 апреля 2017 В силу того, что отдел по СЕО-продвижению постоянно требовал вставить в файл 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 для Вашего сайта без боязни смены домена или что-то в этом духе. Если есть пожелания - готов выслушать. Надеюсь подобное разработчики добавят в будущих релизах :-) Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.