- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте! Помогите пожалуйста разобраться с проблемой:
Пытаюсь сделать 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?
Попробуйте сделать примерно вот так:
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$ [NC]RewriteCond %{HTTP_HOST} !^www\.site\.ru$ [NC]
RewriteRule ^(.*)\.site\.ru(.*) /$1$2 [L]
Это правило не срабатывает, независимо от имени поддомена.
Pattern в RewriteRule сравнивается с текущим URL, а в нем нет доменного имени.
В Вашем случае, по идее вот так должно быть:
Еще посмотрите вот тут: "Виртуальные" поддомены я там с похожей проблемой "сражался"
Не работает, к сожалению. По-прежнему для несуществующих поддоменов (папок) выдает 500 Internal Server Error.
Разобрался. Я ошибочно полагался на L флаг, думая, что он в любой ситуации останавливает процесс mod_rewrite. Это не так. Если при обработке RewriteRule изменился URL, то по окончании разбора всех правил "создается" новый URL-запрос и обработка происходит заново.