логика работы RewriteRule

Felclist

Новичок
логика работы RewriteRule

Вот никак не пойму ее в моем случае:
требуется все пути удовлетворяющие RewriteCond приводить к нужному виду, записываю:

RewriteCond %{HTTP_Host} ^([^\.]+)mysite.ru
RewriteRule ^(.+)$ ?q=%1

но эта констукция не работает(выдается internal server error). работает она только в таком виде

RewriteCond %{HTTP_Host} ^([^\.]+)mysite.ru
RewriteRule ^(.+)$ $1?q=%1 (обнаружил это случайно)

Стал экспериментировать, получил, что:

RewriteCond %{HTTP_Host} ^([^\.]+)mysite.ru
RewriteRule ^(.{1,8})$ ?q=%1 - работает, а:
RewriteRule ^(.{1,9})$ ?q=%1 - уже не работает без приписки $1

Отсюда вопросы:
1. почему такое происходит именно с точкой(если я запишу например([0-9]*), То все будет работать для цифр)?
2. Чем так критичен переход с максимального кол-ва символов 8 на 9?
3. зачем он(апач) требует постановки $1?q=%1 ? что это дает вообще?
Буду признателен, если мне кто-нибудь разъяснит
 

Felclist

Новичок
так, все равно не работает=/:
RewriteRule ^.+$ ?q=%1

и почему скобками я это требую?
 

Gas

может по одной?
так, все равно не работает=/:
RewriteRule ^.+$ ?q=%1
может всё таки стоит укать путь, к которому лепить ?q=%1 ?

и почему скобками я это требую?
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteRule

создаётся впечатление что ты проводишь шаманский обряд, а не совершаешь понимаемые/обдуманные действия.
 

Felclist

Новичок
Автор оригинала: Gas
может всё таки стоит укать путь, к которому лепить ?q=%1 ?
но почему, если регэкспами ему указать, что любых символов меньше 8ми, то никакие пути указывать не надо, а тут вдруг становиться надо? к тому же, если сделать /?q=%1, то эффект будет тот же..

создаётся впечатление что ты проводишь шаманский обряд, а не совершаешь понимаемые/обдуманные действия.
ага, в точку. я же действительно не могу понять, чем руководствуется апач при принятии решения). поэтому сложно совершать обдуманные действия(ведь не знаешь к чему они приведут). вот ты сам-то видишь логику во всем этом?

укажи плс, где в документации про скобки написано, че-то не вижу(
 

Gas

может по одной?
насчёт обязательного указания back-referenc'а это я конечно погарячился :)

если регэкспами ему указать, что любых символов меньше 8ми, то никакие пути указывать не надо, а тут вдруг становиться надо?
скорее всего, потому что при <=8 символов не срабатывает условие - вот и нет ошибки, когда срабатывает - 500

чем руководствуется апач при принятии решения
В этом помогут RewriteLog/RewriteLogLevel. Включи логи, и сразу станет многое ясно.
 

Felclist

Новичок
Gas
хм, действительно полезная вещь, помогает:)
я и не знал, что есть Log Для rewrite. спасибо!
 
Сверху