|
|
|
| Доброе время суток.
Есть два сайта, работают на Apache 2.2 , первый с доменом domain.com находится в стандартной папке /htdocs/, второй с доменом link.domain.com находится в папке /htdocs/link, для обоих требуется mod_rewrite.
Первый сайт использует :
Второму требуется :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?redirect=$1 [L]
|
Проблема в том, что .htaccess из корневой директории конечно же распространяется и на /link/, поэтому если link.domain.com обращается к своему .htaccess где прописан код приведенный выше, Апач выдает 500'ую ошибку.
Вопрос, как быть? Пробовал
RewriteCond %{HTTP_HOST} !^link\.domain\.com$ [NC]
|
Для второго правила, но не помогло.
Постарался изобразить, что и как у меня установлено (при таком раскладе, получаю 500 ошибку)
http://rghost.net/36966817/image.png
Пытался сделать и так
http://rghost.net/36966968/image.png
Так, ошибку не дает, оба сайта открываются нормально, но на втором правила
RewriteCond %{HTTP_HOST} !^link\.domain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?redirect=$1 [L]
|
Просто игнорируются, тоесть как буд-то их вобще нет в .htaccess | |
|
|
|
|
|
|
|
для: Nerfair
(12.03.2012 в 01:47)
| | Нужно еще писать при каких запросах вы получаете описанные результаты
________
> Апач выдает 500'ую ошибку
Что при этом пишется в логе?
__________
> Пробовал RewriteCond %{HTTP_HOST} !^link\.domain\.com$ [NC] Для второго правила
.....
> Так, ошибку не дает, оба сайта открываются нормально, но на втором правила...
Чет я не пойму. Вы говорите апачу выполнять правила если host не равен link.domain.com
А при каком обращении так будет? http://domain.com/link/chto-to-escho
При обращении http://link.domain.com/chto-to-escho он должен правила проигнорировать. Вы сами ему об этом сказали
_____________
Вообще при обращении к поддомену не должен подключаться htaccess из верхней дирректории.
Но попробуйте дописать
RewriteCond %{HTTP_HOST} !^link\.domain\.com$ [NC]
как раз первый htaccess, а не во второй. А во второй дописать
RewriteBase / | |
|
|
|
|
|
|
|
для: Sfinks
(12.03.2012 в 13:53)
| | Вы не поверите, но похоже не хватало просто рестарта апача, сегодня уходил выключил сервер, пришел начал разбираться.
Сейчас все отлично работает с
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^error/([^/]*)\.html$ /index.php?message=$1 [L]
ErrorDocument 403 http://www.domain.com/error/Access%20Denied.html
ErrorDocument 404 http://www.domain.com/error/Not%20Found.html
ErrorDocument 500 http://www.domain.com/error/Server%20Error.html
|
в /htdocs/.htaccess
и
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?redirect=$1 [L]
|
в /htdocs/link/.htaccess
Причем правила первого не распространяются на /link/, и нет никаких ошибок. | |
|
|
|
|
|
|
|
для: Nerfair
(12.03.2012 в 21:01)
| | я так и писал выше
> Вообще при обращении к поддомену не должен подключаться htaccess из верхней дирректории | |
|
|
|
|
|
|
|
для: Sfinks
(12.03.2012 в 21:36)
| | Да, я это заметил, я просто не правильно понимал 500 ошибку, я думал что это режуться между собой .htaccess (отсюда мысли что первый .htaccess влияет на второй), а это оказалась ошибка синтаксиса.
Спасибо за помощь, Вы были правы и выручили. | |
|
|
|