Задать вопрос
anti1869
@anti1869

Mod_rewrite не работает только для одного VirtualHost?

Есть несколько абсолютно идентичных виртуальных хостов. Вот их конфиг двух таких:

<Directory "/home/user/">
    Options Indexes FollowSymLinks MultiViews Includes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<VirtualHost *:80>
	DocumentRoot /home/user/hostA/www
	CustomLog /home/user/hostA/logs/access.log combined
	ErrorLog /home/user/hostA/logs/error.log
    ScriptAlias /cgi-bin/ "/home/user/hostA/cgi-bin/"	
	ServerName www.hostA.ru
	ServerAlias hostA.ru	
</VirtualHost>

<VirtualHost *:80>
	DocumentRoot /home/user/hostB/www
	CustomLog /home/user/hostB/logs/access.log combined
	ErrorLog /home/user/hostB/logs/error.log
    ScriptAlias /cgi-bin/ "/home/user/hostB/cgi-bin/"
	ServerName www.hostB.ru
	ServerAlias hostB.ru	
</VirtualHost>



В веб-корне каждого хоста лежит .htaccess вот с таким содержимым

RewriteEngine on
RewriteCond	%{REQUEST_FILENAME}	!-f
RewriteCond	%{REQUEST_FILENAME}	!-d
RewriteRule	^(.*)$	index.html [QSA,L]



Так вот, проблема в том, что на hostA все прекрасно. mod_rewrite работает как надо, все запросы редиректятся на корневой index.html


А вот на hostB такое ощущение что mod_rewrite вообще не запустился. Симптомы такие же как если бы сделать RewriteEngine off

При этом .htaccess обрабатывается, остальные директивы работают.


Если добавить лог:
RewriteLog /home/user/hostB/logs/rewrite.log
RewriteLogLevel 3


туда ничего не пишется


В какую сторону посмотреть? Спасибо
  • Вопрос задан
  • 4155 просмотров
Подписаться 3 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
anti1869
@anti1869 Автор вопроса
Решил следующим образом: для HostB сделал новый DocumentRoot, стал по очереди копировать туда файлы из старой директории. Оказалось что по какой-то неведомой причине к ошибке приводит стилевой файл .xsl, который болтался в корне сайта и даже нигде не подключался. Очень странно. Пора заводить бубен :)
Ответ написан
Комментировать
BuriK666
@BuriK666
Компьютерный псих
хмм, а попробуй поменять описание hostA и hostB местами.
в /home/user/hostB/ случаем не лежит какой-нибудь .htaccess?
Ответ написан
Комментировать
anti1869
@anti1869 Автор вопроса
не, больше .htaccess-ов нет никаких. Более того, проблема началась после апгрейда апача. До этого все работало. Файлы хостаБ не трогались.

Вот mod_rewrite таки написал лог 2-го уровня:

127.0.0.1 - - [03/Jul/2012:18:30:13 +0400] [hostB.ru/sid#80bff70][rid#8245ac0/initial] (2) [perdir /home/user/hostB/www/] rewrite 'hostB/p/square.gif' -> 'index.html'
127.0.0.1 - - [03/Jul/2012:18:30:13 +0400] [hostB.ru/sid#80bff70][rid#8245ac0/initial] (2) [perdir /home/user/hostB/www/] strip document_root prefix: /home/user/hostB/www/index.html -> /index.html
127.0.0.1 - - [03/Jul/2012:18:30:13 +0400] [hostB.ru/sid#80bff70][rid#8245ac0/initial] (1) [perdir /home/user/hostB/www/] internal redirect with /index.html [INTERNAL REDIRECT]
127.0.0.1 - - [03/Jul/2012:18:30:13 +0400] [hostB.ru/sid#80bff70][rid#8256ac0/initial/redir#1] (1) [perdir /home/user/hostB/www/] pass through /home/user/hostB/www/index.html
127.0.0.1 - - [03/Jul/2012:18:30:13 +0400] [hostB.ru/sid#80bff70][rid#8258b08/subreq] (1) [perdir /home/user/hostB/www/] pass through /home/user/hostB/www/index.html

Ответ написан
Комментировать
@Webgr
Такая же беда возникла. Разница между сайтами в доменах, имени пользователя, группы и в способе загрузки. На первый сайт загружал все через ftp, на второй через sftp. Остальное полностью идентично, конфиги создавались скриптом, никаких различий совершенно.
Через sftp русские имена файлов побились(несколько штук, не критично) и на этом все что пока заметил. Т.е. неверно записались имена файлов и не работает mod-rewrite, но это не должно быть связано, куда копать пока не представляю.
Все аналогичные действия многократно повторялись под debian 6, никаких проблем не возникало. Этот сервер под debian 7.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы