Дано:
* Debian 6.0.1a
* Apache/2.2.16 (Debian)
* DocumentRoot /var/www*
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>* Доп. директория /var/www/test/, c .htaccess
# ---Options +FollowSymlinks
RewriteEngine On
RewriteBase /#
* есть HTML - /var/www/test/index.html
<html>
<body>
<center>
<img src="/tb.png" />
</center>
</body>
</html>
Эта PNG-шка них...я не показываетсяmod_rewrite включен и работает, проверенно включением неверной строки в
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
sdfasdfasdfasdf
</IfModule>Только он них...я не отрабатывает. :)
* error.log говорит
File does not exist: /var/www/tb.png, referer: http://....
---
Тока не пинайте, последний раз апач видел в версии 1.3.27
На мой взгляд, всё оно верно говорит.Уточни, где какой файл лежит и по какому URL что запрашивается.
> На мой взгляд, всё оно верно говорит.
> Уточни, где какой файл лежит и по какому URL что запрашивается.ROOT=/var/www/
PNGшка в /var/www/something, там же .htaccess и HTML
В описанной конфигурации PNG-файл должен читаться из "/var/www/tb.png".
Поскольку не читается, вариантов два:
(а) его там нету
(б) он там есть, но прав на его чтение пользователь www-data и/или группа www-data не имеют
> В описанной конфигурации PNG-файл должен читаться из "/var/www/tb.png".
> Поскольку не читается, вариантов два:
> (а) его там нету
> (б) он там есть, но прав на его чтение пользователь
> www-data и/или группа www-data не имеют
~$ ls -la /var/www/test/ -la
total 279960
drwxr-xr-x 2 www-data www-data 67 Jun 24 13:42 .
drwxr-xr-x 14 www-data www-data 4096 Jun 24 14:14 ..
-r--r--r-- 1 www-data www-data 143 Jun 23 04:26 .htaccess
-r--r--r-- 1 www-data www-data 124 Jun 24 13:42 index.html
-r--r--r-- 1 www-data www-data 181985 May 25 03:09 tb.png
Ну дык а с какой стати данный PNG-шник должен искаться в подкаталоге test?
Он ищется в /var/www, о чем честно и написано в логе.Директива "RewriteBase /" здесь ничего не даст: если файл .htaccess расположен в подкаталоге test корня документов сервера (как и файл test.htm), то "правая часть" правила подстановки должна включать в себя строку "/test". То бишь нужно написать более конкретное правило подстановки, скажем, через RewriteRule.
> Ну дык а с какой стати данный PNG-шник должен искаться в подкаталоге
> test?
> Он ищется в /var/www, о чем честно и написано в логе.
> Директива "RewriteBase /" здесь ничего не даст: если файл .htaccess расположен в
> подкаталоге test корня документов сервера (как и файл test.htm), то "правая
> часть" правила подстановки должна включать в себя строку "/test". То бишь
> нужно написать более конкретное правило подстановки, скажем, через RewriteRule.Ладно, зайдем с другой стороны, как должен выглядить .htaccess, чтоб
всё находящиеся в нем думало, что оно живёт в коренвом каталоге сервера?!Мне вебдезигнеры подарили вот такой.
Естественно с коментарием "У нас всё работает".
Options +FollowSymlinks
RewriteEngine On
RewriteBase /RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{REQUEST_URI} !^/robots\.txt$
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]RewriteCond %{HTTP_USER_AGENT} ^.*internal\ dummy\ connection.*$ [NC]
RewriteRule .* - [F,L]RewriteRule ^(manager|assets)/*$ - [L]
RewriteRule \.(jpg|jpeg|png|gif|ico)$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
> Ладно, зайдем с другой стороны, как должен выглядить .htaccess, чтоб
> всё находящиеся в нем думало, что оно живёт в коренвом каталоге сервера?!ИМХО, это не реально в общем случае.
Если запросы будут идти к корневому каталогу сервера, то и .htaccess надо класть в /docroot/ , делать перенаправление на каталог ниже, и это может сломать то, что лежит непосредственно в /docroot/ (к примеру, при конфликте имен каталогов).Допустим, в HTML file.html есть <img src="/img/image.png"> ...
Всё это лежит в каталоге /docroot/test/ ( /docroot/test/img/file.html (1) + /docroot/test/img/image.png (2) )
А где-то в /docroot/ есть /docroot/img/image.png (3)
Когда браузер делает запрос http://site/img/image.png никто и никогда не сможет определить, это запрос за (2) или за (3).
А если содержимое HTML прописано в относительных ссылках, то вроде как и править ничего не надо.. :-)
>> Ладно, зайдем с другой стороны, как должен выглядить .htaccess, чтоб
>> всё находящиеся в нем думало, что оно живёт в коренвом каталоге сервера?!
> ИМХО, это не реально в общем случае.Апач не умеет chroot()?
>>> Ладно, зайдем с другой стороны, как должен выглядить .htaccess, чтоб
>>> всё находящиеся в нем думало, что оно живёт в коренвом каталоге сервера?!
>> ИМХО, это не реально в общем случае.
> Апач не умеет chroot()?Исправь DocRoot на нужное значение
>>>> Ладно, зайдем с другой стороны, как должен выглядить .htaccess, чтоб
>>>> всё находящиеся в нем думало, что оно живёт в коренвом каталоге сервера?!
>>> ИМХО, это не реально в общем случае.
>> Апач не умеет chroot()?
> Исправь DocRoot на нужное значениеНу вот представь, таскают тут дезигнеры тонны своих сайтов,
я ж не могу их всех пихать в DocRoot, по этому надо придумать
какую-то хрень для того, чтоб их сайты думали, что они живут в корне.
> Ну вот представь, таскают тут дезигнеры тонны своих сайтов,
> я ж не могу их всех пихать в DocRoot, по этому надо
> придумать
> какую-то хрень для того, чтоб их сайты думали, что они живут в
> корне.IMHO нормальный вариант один - на каждый такой "дезигнерский" сайт свой VirtualHost.
Некие усилия на настройку DNS окупятся простой, понятной и модульной конфигурацией.А вообще если "дезигнеры" были в курсе, что всё это хозяйство будет жить в коммунальной
среде, то за такие "корень-ориентированные" сайты их надо гнать с работы метлой поганой.
Лень мне их всех лечить, загнал Демьяна с апачем в виртуалку и клонов пускаю на разных портах.Хотя да, можно было бы и VirtualHost.
> Лень мне их всех лечить, загнал Демьяна с апачем в виртуалку и
> клонов пускаю на разных портах.
> Хотя да, можно было бы и VirtualHost.*.dev.firma.com в DNS + mod_macro (ручной вариант) / спецмодуль (название не помню, чтото там с VHost связано) - и пусть создают каталоги внутри определенного каталога сколько угодно, и ходят туда по catalog.dev.firma.com
>[оверквотинг удален]
>> я ж не могу их всех пихать в DocRoot, по этому надо
>> придумать
>> какую-то хрень для того, чтоб их сайты думали, что они живут в
>> корне.
> IMHO нормальный вариант один - на каждый такой "дезигнерский" сайт свой VirtualHost.
> Некие усилия на настройку DNS окупятся простой, понятной и модульной конфигурацией.
> А вообще если "дезигнеры" были в курсе, что всё это хозяйство будет
> жить в коммунальной
> среде, то за такие "корень-ориентированные" сайты их надо гнать с работы метлой
> поганой.тут нужен бОланс ))))
пока верстают - делают относительные ссылки. В продакшен отправлять - надо всё позаменять, иначе будет http://www.opennet.me/openforum/vsluhforumID8/7281.html
>>[оверквотинг удален]
> тут нужен бОланс ))))
> пока верстают - делают относительные ссылки. В продакшен отправлять - надо всё
> позаменять, иначе будет http://www.opennet.me/openforum/vsluhforumID8/7281.htmlХотел сделать так,
http://domain.com/site1/
http://domain.com/site2/
http://domain.com/site3/
...но чтоб любой момент, перенести site[n] в корень.
Правильные относительные ссылки тут спасли бы, так этих до...бы,
копипастят CMS с сайтов, кто-как ...Вы б видели что они присылают, статистику, логи, SQL дампы с логинами
и паролями, причем с рабочего на данный момент интернет магазина.
Проверил только 4 логина, и все рабочие.
Я конечно гадить не буду, но вот так кому-нибудь попадётся.Владельцы тоже дол...бы, первое правило, - уволил админа - меняй всё, вплоть до пола :)
>[оверквотинг удален]
>> пока верстают - делают относительные ссылки. В продакшен отправлять - надо всё
>> позаменять, иначе будет http://www.opennet.me/openforum/vsluhforumID8/7281.html
> Хотел сделать так,
> http //domain.com/site1/
> http //domain.com/site2/
> http //domain.com/site3/
> ...
> но чтоб любой момент, перенести site[n] в корень.
> Правильные относительные ссылки тут спасли бы, так этих до...бы,
> копипастят CMS с сайтов, кто-как ...Сделай им, наконец,
http!//site1.domain.com/
http!//site2.domain.com/
http!//site3.domain.com/и _не_ публикуй сайты в DNS --- пусть ещё свои hosts обкопипастят.