повидал я сайтов за время работы в фирме по поддержке сайтов...
НО ТАКОГО Я ЕЩЕ НЕВИДЕЛ!!!!!
это просто капец полный... Началось все с того, что необходимо было запустить сайт
на локальном хостинге.
.htaccess -- ничего особенного
ErrorDocument 404 /err404.php
ErrorDocument 403 /err404.php
DirectoryIndex index.php index.html index.htm index.phtml
AddDefaultCharset windows-1251
index.php -- тоже обычный код - перенаправление запроса на страницу, URL из базы
query("SELECT dir FROM catalogue_fin WHERE pid=0 ORDER BY id LIMIT 1");
if($db->next_record()){header("Location: /".$db->Record["dir"]."/");exit();
}?>
А теперь фишка: в поле dir в таблице catalogue_fin в первой записи стоит значение 'index',
т.е. осуществляется редирект на /index/ НО ПАПКИ index нет и не было никогда!!!!
Следовательно, согласно настройкам .htaccess, осуществляется обработка 404 ошибки криптом /err404.php
смотрим /err404.php (я уже ничего не вижу, слезы заливают глаза;) ):
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////
//
// Virtual html-pages builder v4.0
// Inout systems software product
// Author: Maxim Tushev
// Copyright 2004-2005
//
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////
session_register();
header("HTTP/1.1 200 OK");
require "./function.php";
require "./templates_rus/mess.inc";
require "./webadmin/lenguages.inc";
$QUERY_STRING="";
$LANG="";
if(isset($lenguagesDomain[$_SERVER["HTTP_HOST"]])) $LANG=$lenguagesDomain[$_SERVER["HTTP_HOST"]];
$_SESSION["len"]=($LANG? $LANG:"rus");
$spec="";
if (strpos($_SERVER["REQUEST_URI"],"?")) {
$QUERY_STRING=substr($_SERVER["REQUEST_URI"],
...bla-bla-bla
... и пошла главная страница!!!
Я НЕ МОГУ ЭТОГО ВЫНЕСТИ!!!!!
Мало того, что главная страница сайта выдается при ошибке, так еще и при обработке 404 ошибки выдается код 200!!!
Maxim Tushev, ты чем думал???? НАФИГА ты это делаешь с моим мозгом!!!!!!
ну ладно, можно сделать с /er404.php ССЫЛКУ на главную, но делать главную /er404.php ... этого я понять не в силах...
r-asian показывал мне магазин, который он переделывал, в котором на каждую группу товаров своя таблица была!!! "явно гуманитарий писал..." (С) r-asian.
2Модераторы: не убивьте пост, я теперь буду писать "...по самое летцо!" ;))
глянь на ту же lenta.ru как там ссылки устроены, уж не думаешь ли что там реально нагромождено развесистое дерево директорий, с index.* файлами в каждой?
Это еще фигня... однажды меня один начинающий уеб-кодер попросил посмотреть почему гостевуха не работает... после того как я глянул код валялся под стулом полчаса.
Гостевуха была написана на javascript... на клиентском javascript... новые записи в нее добавлялись с помощью чего-то вроде document.getElementById("messages").innerHTML += blabla
Нарочно такое не придумаешь...
> Не всегда бывает mod_rewrite доступен / не все его асиливают.
Это ж кем надо быть, чтоб не осилить mod_rewrite?
Нет, я конечно, понимаю, что с помощью бубна mod_rewrite может хоть кофе варить, но ведь чтоб банально перенаправить /fuck/up/ на index.php?uri=/fuck/up/ не много ума надо ведь надо, а?
Он есть не на всех хостингах. И применим далеко не во всех случаях. Скажем, у меня есть кеш с картинками. Если картинка есть - показываем. Если нет - формируем из основной базы, сохраняем на диск и показываем. Со второго просмотра смотрится статика. mod_rewrite тут не поможет :)
В проекте, где я админ, на каждого пользователя портала своя БД, вся переписка юзеров хранится у каждого участника переписки. Главный пыхпыхер говорит, что это потому, чтобы MySQL не тормозил с большими таблицами.
>Это ж кем надо быть, чтоб не осилить mod_rewrite? Нет, я конечно, понимаю, что с помощью бубна mod_rewrite может хоть кофе варить, но ведь чтоб банально перенаправить /fuck/up/ на index.php?uri=/fuck/up/ не много ума надо ведь надо, а?
AFAIR, в mod_perl можно без всяких mod_rewrite такие вещи делать.
>>Это ж кем надо быть, чтоб не осилить mod_rewrite? Нет, я конечно, понимаю, что с помощью бубна mod_rewrite может хоть кофе варить, но ведь чтоб банально перенаправить /fuck/up/ на index.php?uri=/fuck/up/ не много ума надо ведь надо, а?
>AFAIR, в mod_perl можно без всяких mod_rewrite такие вещи делать.
Мне кажется, что Вы неверно интерпретировали пост. mod_rewrite стоит особняком ото всех языком. Это просто обработчик директив с регулярными выражениями в .htaccess
> Скажем, у меня есть кеш с картинками. Если картинка есть - показываем. Если нет - формируем из основной базы, сохраняем на диск и показываем. Со второго просмотра смотрится статика. mod_rewrite тут не поможет :)
Очень даже поможет. Если нет файла (тестируется по -f), то переписываем на скриптик /get-image.cgi/$1, который этот файлик во-первых отдаст, а во-вторых создаст на диске (вторую часть можно после форка, чтоб клиент не ждал). В следующие раз условие -f уже будет выполняться и отдастся статика. Всё.