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


Автор: vandroid 8.5.2009, 17:35
Здравствуйте! Помогите пожалуйста разобраться с проблемой:
Пытаюсь сделать wildcard-поддомены (в соответствии с http://www.easymodrewrite.com/example-subdomains).
DNS настроили, затем VirtualHost:

<VirtualHost *:80>
DocumentRoot "/home/user/www"
ServerName site.ru
ServerAlias www.site.ru site.ru *.site.ru
LogLevel debug
ErrorLog /home/user/log/error.log
</VirtualHost>

И .htaccess:
ErrorDocument 404 /404.html
DirectoryIndex index.php
Options +Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !www.site.ru$ [NC]
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9_-]+).site.ru [NC]
RewriteRule (.*) %2/$1 [L]


По идее, поддомены domain.site.ru должны реврайтиться в папки вида site.ru/domain/
Суть проблемы в том, что если папка существует, то все ОК. А если ее нет - должна ведь выдаваться ошибка 404? Но вместо этого выдается 500 Internal Server Error.

Лог ошибок:
[Fri May 08 17:09:23 2009] [error] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
[Fri May 08 17:09:23 2009] [debug] core.c(3046): r->uri = /ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /ggg/
[Fri May 08 17:09:23 2009] [debug] core.c(3052): redirected from r->uri = /


Я так понимаю, ggg.site.ru переписывается в site.ru/ggg, эту папку апач найти не может и начинает обработку реврайта по новой? Почему так? И как сделать, чтобы не найдя ее, сервер просто выдал 404?

Автор: Nigel 12.5.2009, 11:54
Попробуйте поменять последнюю строчку на 
Код

RewriteRule ^(.*)$ %2/$1 [L,R=301]

и ServerAlias можно сделать так 
Код

ServerAlias *.site.ru

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