Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > настройка .htaccess для работы с многими доменами


Автор: wsr 1.12.2006, 12:54
Привет всем. У меня следующая проблемка : Хочу сделать, точнее уже сделал движек, на котором базируется несколько сайтов... Так вот, дабы не клонировать файлы для каждого из сайтов я сделал все в одном, т.е. один движек на все сайты, и исходники собственно править приходится только одни, а не везде...
Так вот, структура у меня следующая :
    /www/ - в этой корневой папке у меня находятся файлы движка
    /www/content/ - в этой дирректории находятся папки соответствующие доменным именам
    /www/content/mysite.ru/ - в этой папке находятся все файлы относящиеся к конкретному домену mysite.ru (изображения, папки, другие файлы не относящиеся к движку)
    /www/content/mysite.ru/text.txt - просто текстовый файл
    
Так вот собственно проблема у меня с .htaccess!

Хочу сделать следующее :
    при запросе несуществующего файла к примеру ( http://mysite.ru/not/existed/url ) REQUEST_URI отдавался на обработку скрипту
    а при запросе существующего файла http://mysite.ru/text.txt мне выдавался файл /content/mysite.ru/text.txt
    
С несуществующими файлами я разобрался легко использую mod_rewrite, а вот с существующими никак не получается...

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
Так обрабатываются несуществующие файлы

RewriteCond %{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} -f
RewriteCond %{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} -d
RewriteRule ^(.*)$ content/%{HTTP_HOST}$1
А вот так я пытаюсь обработать существующие файлы

%{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} - в данном случае, это полный путь до файла находящегося в папке /content/%{HTTP_HOST}/
Насколько я понял RewriteCond %{REQUEST_FILENAME} !-f проверяет наличие файла %{REQUEST_FILENAME} и если его нет, то выполняет нижестоящие RewriteRule.

Почему же тогда при такой проверке RewriteCond %{DOCUMENT_ROOT}/content/%{HTTP_HOST}%{REQUEST_URI} -f на существование файла, нижестоящий ReriteRule не выполняется

Автор: wsr 2.12.2006, 15:37
Не ужели никто не сталкивался с подобной проблемой? Или на этом форуме нет компетентных специалистов?

Автор: Mal Hack 2.12.2006, 19:17
Стоп.
если не выполняется:

Цитата(wsr @  1.12.2006,  12:54 Найти цитируемый пост)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]

То файл или папка - существует и запрос идет к ним дальше. Обрабатывать существующие файлы - не нужно.

Автор: Zuzu 16.12.2006, 17:08
Куда показывает DOCUMENT_ROOT для каждого "виртуального" сайта?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)