Адрес домена, урлы файлов и другие адреса
07.10.2009Я уже так привык к апачу, что перестал разделять адреса на реальные адреса файлов и адреса страниц, хотя это две принципиально разные сущности. Сейчас все адреса в блоголёте практически виртуальные, но блоголёт может работать и без апача и его модуля rewrite, например под IIS.
Следующая проблема - имя домена. Сейчас оно задается в настройках и может легко меняться, но сайт ломается при переносе его на другой домен. Хотелось бы независимости от переноса, может быть имя домена не хранить в настройках, либо определять имя из http запроса.
Следующая проблема - сейчас в блоголёте для имен папок используется имя домена, и мне уже кажется неудобным именно это. Пока одно из преимуществ такого наименования папок является восстановление из резервной копии: вначале данные копируются во временную папку, это может занять неопределенное время и сопровождаться неизвестными ошибками. После сохранения из резервной копии файлов одним махом переименовывается старая папка, временная в нужную, а старая потом удаляется. Если не делать вложенной папки в data то это будет сделать сложно.
Также хотелось бы восстановление сайта из сохраненной резервной копии на сайте, а не только через загрузку файла как сейчас.
Пока что самым сложным является вопрос про домен - много зависимых адресов от общего адреса, и следует имеет два адреса: для реальных файлов и для виртуальных адресов, и это следует разрулить. Это еще осложняется мобильной копией сайта, для которой тоже нужно разруливание адресов - для всех виртуальных адресов используется префикс подкаталога /pda/.
Адрес домена еще нужен для массовой установки блоголёта. Например делается и настраивается локальная копия, после чего образец заливается на хосты. Чтобы не было дополнительных настроек по изменению домена.
Пока что все адреса образуются от $Options->url включая имена файлов и виртуальные адреса. Под апашем модулем rewrite оно нормально работает. Следует это дело как то разрулить. То ли ввести $Options->urlfile либо path, dir, base или еще как обозвать? Например сейчас есть не используемая $Options->subdir - имя каталога, если блоголёт установлен в папку. не используется потому, что урл сайта включает имя подпапки.
Есть зависимость от общего урл сайта для стандартных адресов: пингбеки, xmlrpc, rss постов и комментов, которые остаются одинаковыми для обычной и для мобильной версии. В настоящее время $Options->url имеет нормальное значение для обычного сайта, и прибавляется /pda/ для мобильных, и если сделать перечисленные адреса выше динамическими, то в мобильной версии они будут иметь новые адреса. Следовательно надо иметь еще стабильный урл сайта для этих случаев. Скорее всего так и сделаю. Скорее всего назову его root, из которого получается url (прибавляется /pda/ в мобильной версии), и адресом для файлов. Лучше наверно все три адреса начинать с url, то бишь следует добавить свойства для $Options url, urlroot, urlfile. После чего соответствующим образом поправить все исходники для поддержки этих трех адресов.
Если не поступят возражения/соображения так и сделаю, хотя названия свойств как то не самоговорящие, может быть просто без url сделать свойства:?
Комментарии (27) на запись “Адрес домена, урлы файлов и другие адреса”
Оставить комментарий
Движок понравился. Скачал и поставил себе на локальной машине. Win-XP, Apache. При установке задал имя хоста как localhost. Все прошло нормально. Вроде бы. Потому что в блоге не отображается никакая графика и не работают CSS и скины. Только черный текст на белом фоне. В папке Data существует директория localhost (Кстати, попутный вопрос - а как установить движок, если у сервера не 80 порт используется, а к примеру 8080?). Что сделал не так или где что нужно поправить?
Заранее спасибо.
Зайди в админку и выбери дефолтную тему
Без разницы на каком порту ставить, ну если ставил на локалхост, то тема должна быть доступна по адресу:
http://localhost/themes/default/
если у тебя как то по иному, то движок не при чем - собствено откуда он может узнать другой адрес?
В админке менять темы пробовал. Пишет, что сменена успешно, но изменений нет. Тема доступна по адресу:
http://localhost/themes/default/
А про порт спрашивал, потому что при установке создает папку с именем "домен" в папке Data, а если домен указывать скажем так - localhost:8080 , то выругается, что не может создать такую папку.
Короче, может кто-нибудь из гуру попробует поставить у себя под виндой и микроапачем этот движок на локальной машине и отпишется в виде инструкции для не таких продвинутых, как я? А то хотел использовать для личного дневника, но пока подвис.
в корневом файле index.php пропиши имя домена (можно вообще любое имя)
$domain = 'myname';
вместо трех строк, где оно вычисляется. Имя домена ни на что особо не влияет - имена папок и файлов бекапа.
Я пользуюсь денвером для написания и отладки блоголёта, чтобы один к одному работало как на нормальном сервере. Имя домена/адреса не должно как то влиять. Пропиши домен вручную.
Правильно настрой свой сервер. Насколько я понял используется сервер с apache.org. Для настройки своего домена в нем используется директива <VirtualHost> [http://httpd.apache.org/docs/1.3/mod/core.html#virtualhost]
Зачем же использовать полноценный апач со сложной настройкой, когда можно за пару минут установить и настроить денвер? [denwer.ru]
Пришел лог ошибок:
Tue, 06 Oct 2009 07:53:00 -0500
Caught exception: The requested property arg not found in class TCronTask
0 lib/kernel.php(30): TDataClass->Error('The requested p...')
1 lib/cronclass.php(80): TDataClass->__get('arg')
2 lib/cronclass.php(159): TCronTask->Execute()
3 lib/cronclass.php(135): TCron->ExecuteTasks()
4 lib/kernel.php(866): TCron->Request(NULL)
5 lib/kernel.php(858): TUrlmap->PrintClassContent('TCron', Array)
6 lib/kernel.php(753): TUrlmap->PrintContent(Array)
7 lib/kernel.php(732): TUrlmap->DoRequest('/croncron.php?c...')
8 index.php(28): TUrlmap->Request('jposter.ru', '/croncron.php?c...')
9 {main}
Второй:
Tue, 06 Oct 2009 09:34:14 -0500
Caught exception: The requested property arg not found in class TCronTask
0 lib/kernel.php(30): TDataClass->Error('The requested p...')
1 lib/cronclass.php(80): TDataClass->__get('arg')
2 lib/cronclass.php(159): TCronTask->Execute()
3 lib/cronclass.php(135): TCron->ExecuteTasks()
4 lib/kernel.php(866): TCron->Request(NULL)
5 lib/kernel.php(858): TUrlmap->PrintClassContent('TCron', Array)
6 lib/kernel.php(753): TUrlmap->PrintContent(Array)
7 lib/kernel.php(732): TUrlmap->DoRequest('/croncron.php?c...')
8 index.php(28): TUrlmap->Request('site.ru', '/croncron.php?c...')
9 {main}
Использую MicroApache http://microapache.amadis.sytes.net/ - очень маленький и портативный, не требует установки, переноситься на флешке вместе с нужными программами. Не содержит ненужных SQL. На нем у меня прекрасно работает PmWiki, а до этого - DokuWiki.
В .htaccess разрешил все.
Короче, выяснил следующее: если при установке я ставлю галку "я уверен, что мой сервер поддерживает moderewrite" , то после установки все выглядит красиво (отображается вся графика на первой странице), но ни одна ссылка не работает. В том числе и админка. А если такую галку не ставить, то все с точностью до наоборот. Все ссылки (в том числе админка) работают, а графики нет вообще.
Денвер тоже можно носить на флешке. В нем для создания десятка локальных сайтов с доменами нужно всего лишь создать папки с именами доменов и закинуть туда сайты.
MicroApache почти тоже самое, что и стандартные апач. В нем нужно все прописывать в конфиге, создавая виртуальные хосты да еще ставить их прослушивание, читай ман [http://httpd.apache.org/docs/2.0/mod/core.html#virtualhost]
Если тебе хватает одного домена, задай ServerName [http://httpd.apache.org/docs/2.0/mod/core.html#servername]
В /conf/httpd.conf
Для исправления графики, в index.tml замени:
<link rel="stylesheet" href="$Template->url/style.css" type="text/css" media="screen" />
На:
<link rel="stylesheet" href="/themes/default/style.css" type="text/css" media="screen" />
Вместо $Options->url$Options->home поставь /
и т.д.
Это означает, что у тебя однозначно не установлен модуль апача rewrite: если инсталятор не смог найти этот модуль, то он показывает галочку, обычно галочки во время инсталяции нет. Бывает, что php установлен как cgi и тогда он не может обнаружить модуль. Изначально блоголёт делался с возможностью работы без апача, например на IIS, и без апача урлы формируются как get запросы, например
http://blogolet.ru/?url=/some-link/
а поскольку у меня нет просто времени на полноценные тесты, то скорее всего линки на файлы темы тоже стали такого вида и не работают, надо будет не забыть разрулить эту ситуацию.
рекомендация - уже писали: пользуйся нормальным денвером, где все настроено для нормальной работы.
Хм, с blogolet.ru в рсс ленте комментов последний:
http://blogolet.ru/izmeneniya-v-vidzhetax-zagolovki-i-oformlenie-standartnyx/#comment-2076
и еще пришли три отсюда
http://blogolet.ru/pervaya-zapis-v-bloge/
Не по теме, но не хочется беспокоить Вас по e-mail с такой ерундой.
В индекс Яндекса попали 2 страницы 2 моих сайтов на Блоголёте с вот таким содержанием:
Вверху страницы написано Warning: Invalid argument supplied for foreach() in /lib/postsclass.php on line 199.
А там, где заголовок и тело статьи
Не найдено
Извините, но у нас нет того, что Вы здесь ищете.
В обоих случаях это тэги к записям. Вообще-то там должен быть текст (анонс записи), но его почему-то нет. Хотя другие тэги (но не все) прекрасно отображаются.
Попытался сам исправить. Пошёл в Обслуживание – Резервирование – сделал Reinstall TPosts postsclass.php, а потом TPost postclass.php (по ошибке), но не помогло.
Как избавиться от этой ошибки? А то сейчас посмотрел. В индексе Яндекса только две такие страницы, а на блогах проблемных больше. Открыл запись, к которой были добавлены тэги. Две нормально открываются, а две выдают такую ошибку. Как-то странно.
Версия ядра старинная (2.11), последние месяцы ничего там не трогал. Только добавлял новые страницы.
Не знаю, поможет ли это. Но в разделе «Управление метками» заметил следующее. Все метки идут но порядку. А потом вот такой поворот:
257 месть
260 проклятье
261 Вуду
262 торжество
То есть после 257 идёт 260, хотя я на этом блоге никогда не удалял метки. И как раз 260 и 261 выдают ошибку. А 262 относится к другой записи, поэтому там никакой ошибки нет.
Вдобавок ко всему переустановил TTags tagsclass.php, из-за чего у меня вообще пропали все тэги. То есть ссылки на них есть, а когда открываешь страницу, то там «Не найдено». Вот это серьёзно. Хотелось бы вернуться к прежнему состоянию, а то бэкап по глупости не сделал.