У ленты этот движок основан на mod_rewrite, имнсхо, поскольку там апач стоит
www.lenta.ru
HTTP/1.1 200 OK
Date: Fri, 11 Jan 2002 14:45:37 GMT
Server: Apache/1.3.14 (Unix) rus/PL30.0
соответственный rewrite rule регекспом - и все ок. а в директории хтмл'ки складывать - черезчур корявый изврат. 8)
вот пример, как организовать подобное:
мы хотим выводить новости из базы данных по запрошенному ури
w3.lenta.ru/2002/01/11/tv6/ имея таблицу с полями новостей anchor VARCHAR(255), date date, announce VARCHAR(255), body TEXT; где anchor - текстовый указатель, date - дата, announce - анонс новости, body - тело новости.
делаем виртуальный хост
--- [ httpd.conf ] ---
LoadModule rewrite_module modules/mod_rewrite.so
<VirtualHost 192.168.10.1>
ServerName w3.lenta.ru
DocumentRoot "/wwwroot/htdocs/w3lenta"
RewriteEngine On
RewriteLogLevel 2
RewriteCond %{REQUEST_URI} !/index\.php
RewriteRule ^/([0-9][0-9][0-9][0-9]+)/([0-9][0-9]+)/([0-9][0-9]+)/(.*)/$
/news.php?anchor=$4&date=$1-$2-$3 [T=application/x-httpd-php,L]
ErrorLog logs/w3lenta-error.log
CustomLog logs/w3lenta-access.log common
<Directory /wwwroot/htdocs/w3lenta>
Options +Includes -Indexes
</Directory>
</VirtualHost>
--- [ httpd.conf ] ---
сразу привожу извинения за длинный регексп - пхп/перловый
^/(\d{4}+)/(\d{2}+)/(\d{2}+)/(.*)/$ не прокатил. видимо модифер \d rewrite engine не понимает - у него там какие-то свои правила паттернов.
прописываем w3.lenta.ru в hosts на ip 192.168.10.1 (ip по вкусу - у кого как отстроен локальный айпишник)
создаем два файла в корне /wwwroot/htdocs/w3lenta/:
1. этот будет отвечать на запрос w3.lenta.ru и в нем, допустим, строится листинг по таблице из 10-ти последних новостей, но мы сюда забьем тестируемый урл.
--- [ index.php ] ---
<a href="/2002/01/11/tv6/">ТВ-6 распадается</a>
--- [ index.php ] ---
2. этот будет выводить новость по date и anchor. кода не прописано, но сделать select announce, body, date from table where date=$date AND anchor=$anchor из таблицы новостей, я думаю, трудности никому не составит. 8)
--- [ news.php ] ---
<?
echo 'данные запрошенной новости: anchor = '.$anchor.', date = '.$date.'
';
echo 'REQUEST_URI: http://'.getenv("HTTP_HOST").getenv("REQUEST_URI");
?>
--- [ news.php ] ---
набираем в ослике w3.lenta.ru, щелкаем линк, и наслаждаемся результатом 8)
данные запрошенной новости: anchor = tv6, date = 2002-01-11
REQUEST_URI: http://w3.lenta.ru/2002/01/11/tv6/
remarks: в реале можно сделать, если админ конфиг пропишет или ты сам админ. 8)
некоторые феньки rewrit'а (не могу сказать точно какие) работают только в версии апача выше 1.2 - я тестировал на 1.3.20. категорию прикрутить тоже несложно - просто соответствующих категориям регекспов налепить, убрав modifier L (last rule) из всех окромя последнего.
Vladimir N. Zaytcev <2:5015/116>