Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с mod_rewrite
 
 автор: Nerfair   (12.03.2012 в 01:47)   письмо автору
 
 

Доброе время суток.

Есть два сайта, работают на Apache 2.2 , первый с доменом domain.com находится в стандартной папке /htdocs/, второй с доменом link.domain.com находится в папке /htdocs/link, для обоих требуется mod_rewrite.

Первый сайт использует :
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^error/([^/]*)\.html$ /index.php?message=$1

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


Второму требуется :
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

  Ответить  
 
 автор: Sfinks   (12.03.2012 в 13:53)   письмо автору
 
   для: 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 /

  Ответить  
 
 автор: Nerfair   (12.03.2012 в 21:01)   письмо автору
 
   для: 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/, и нет никаких ошибок.

  Ответить  
 
 автор: Sfinks   (12.03.2012 в 21:36)   письмо автору
 
   для: Nerfair   (12.03.2012 в 21:01)
 

я так и писал выше
> Вообще при обращении к поддомену не должен подключаться htaccess из верхней дирректории

  Ответить  
 
 автор: Nerfair   (12.03.2012 в 21:57)   письмо автору
 
   для: Sfinks   (12.03.2012 в 21:36)
 

Да, я это заметил, я просто не правильно понимал 500 ошибку, я думал что это режуться между собой .htaccess (отсюда мысли что первый .htaccess влияет на второй), а это оказалась ошибка синтаксиса.

Спасибо за помощь, Вы были правы и выручили.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования