Динамический дорген - это просто
Ты всё ещё генеришь доры какими-то программами и переписываешь их в нужное место даже если они будут на твоих собственных доменах? И сколько ты тратишь на это времени? А тратишь ты его зря.
Всего два файла - и всё, что тебе нужно будет делать - это подключить функцию собственно генерации страницы (об этом будет написано в ближайшее время) и , возможно, выбрать ключевики, на которые будут генериться странички.
магия mod_rewrite
Чего только нельзя сделать с помощью этого черезвычайно полезного модуля.
Его задачей в нашем случае будет перенаправление запроса на соответствующую страничку, а если её не существует - на скрипт, который создаст нам эту страницу.
RewriteEngine On
##1
RewriteCond %{HTTP_HOST} !^$
#2
RewriteCond %{REQUEST_URI} ^/?([^/]+)$
#3
RewriteCond %{REQUEST_URI} !makepage.php
#4
RewriteRule ^(.*)?$ %{HTTP_HOST}/$1 [QSA,PT,L]
#5
RewriteCond %{REQUEST_URI} /$
RewriteRule ^(.*) %1/index.html [PT]
RewriteCond %{REQUEST_URI} /.+
#6
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
#7
RewriteRule ^(.*) %{DOCUMENT_ROOT}/makepage.php [L]
Теперь объясняю что здесь происходит:
1. Этот блок направляет урл вида http://domain.org/page.html на файл "domain.org/page.html". Т.е. файл будет браться из вложенной папки с именем, совпадающим с названием домена.
2. Эта строчка запрещает преобразовывать урлы, в которых есть папка. Т.е. урл вида http://domain.org/folder/page.html преобразовываться не будет. Это нужно для того, чтобы избежать зацикливания преобразований, а также чтобы была возможность ложить в папки общие для всех доменов файлы (картинки, стили и т.п.).
3. Строка запрещает преобразование урла, если этот урл - наш генератор страниц. Это опять же нужно для того, чтобы избежать зацикливания.
4. Собственно правило преобразования.
5. Преобразовываем пустой урл (http://domain.org/) в урл (http://domain.org/index.html). Это нужно для того, чтобы при отключенном отображении листинга директории (а я всегда отключаю его) и отсутствующем index.html сервер не выдавал "403 Forbidden", а нормально перенаправлял на генератор страницы.
6. Правило выполняется, если отсутствует запрашиваемый файл.
7. В этом случае перенаправляем запрос на скрипт-генератор (он у нас лежит в makepage.php).
Готово. Теперь переходим к генератору страниц.
генератор страниц
Задача генератора страниц - определить, какую страница и по какому кейворду нам нужна, сгенерировать её и записать на диск, чтобы в следующий раз при обращении к ней не тратить лишние ресурсы. Лежать он у нас будет в файле makepage.php. И вот его содержимое:
//Файл будем писать в директорию с названием, совпадающим с названием домена
$directory = $_SERVER['HTTP_HOST'];
//Определяем кейворд из адреса. Если генерим индексную страницу - выбираем кейворд каким-либо другим способом на твоё усмотрение
if( preg_match('#/?([^/]+)\.html$#',$_SERVER['REQUEST_URI'],$parts) )
{
$name = $parts[1];
$filename = (!empty($directory) ? $directory.'/' : '').$name.'.html';
$keyword = str_replace("-"," ",$name);
} else if( $_SERVER['REQUEST_URI'] == '/' || empty($_SERVER['REQUEST_URI'] ) )
{
$filename = (!empty($directory) ? $directory.'/' : '').'index.html';
$keyword = "SOME MAIN KEYWORD FOR THIS DOMAIN";
}
//Здесь при желании проверяем, можно ли генерить страницу на этот кейворд на данном домене (для избежания злонамеренного забивания ресурсов и диска недоброжелателями
//Генерим текст страницы (прикрутишь своё)
$text = "Страница про ".$keyword."
";
//Создаём директорию если она не существует
if( !empty($directory) && !file_exists($directory) )
mkdir($directory);
//Сохраняем файл
file_put_contents($filename,$text);
//Выдаём юзеру свежесгенерённый файл
include($filename);
Дальше ты можешь сам улучшать по желанию этот скрипт. Благо, простор для этого практически безграничен. Основа у тебя уже есть.
А пока ты можешь просто залить эти 2 файла в корень своего сайта, набрать в браузере нечто вида http://mydomain.org/test-keyword.html и увидеть сгенерированную страничку.
Теги: генератор дорвея | |
Комментариев нет:
Отправить комментарий