Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mediawiki rewrite rules
Dmitri Sintsov пишет:
Здравствуйте, Nginx-ru
Предлагаемые правила rewrite для движка mediawiki
http://wiki.nginx.org/NginxMediaWiki
"страдают" тем, что в названиях статей, содержащих знак вопроса,
усекаются все символы после знака вопроса:
http://site.ru/Что делать? Чернышевский
превращается в
http://site.ru/Что делать?
Я пытаюсь разработать более корректные правила, но пока что не
получается, может найдете пару минут подскажите в чем ошибка?
Все статьи должны передаваться на /index.php?Title=
причем знак вопроса в названии статьи пытаюсь экранировать с помощью %3F
php скрипты разумеется не преобразовываются.
location / {
index index.php;
error_page 404 = @mediawiki;
}
location @mediawiki {
set $test "A";
if ($args ~* ^/.*?\?.*) {
set $test "${test}Q";
}
if ($args ~* ^/.*?\.php.*) {
set $test "${test}P";
}
if ($test = A) {
rewrite ^/(.*)? /index.php?title=$1 last;
}
if ($test = AQ) {
rewrite ^/([^?]*)(?:\?(.*))? /index.php?title=$1%3F$2 last;
}
if ($test = AQP) {
rewrite ^/(.*)? /$1 last;
}
}
location ~* ^(.)+\.(php)$ {
proxy_pass http://........
proxy pass идет на apache, в нем rewrite не используется.
Нет ли у nginx rewrite debug log, по аналогии с apache?
Версия nginx 0.6.35
из "эстетических" соображений при формировании url не используется
urlencode(),
но вроде бы это не должно влиять на правила, тем более что ? я пытаюсь
заменить на %3F самостоятельно.
С уважением,
Дмитрий
Отвечу пока что сам себе: поставил location @mediawiki {
rewrite_log on;
$args заменил на $request_filename
Вроде бы правила стали работать, но почему-то в логе nginx путь к
ресурсу уже показывается усеченным без query части после знака вопроса.
*11227 "^/(.*)?" matches "/Что делать"
"заранее" часть после знака вопроса откушена.
Все равно не работает.
И еще no such file or directory выдает.. это надо if (-f
$request_filename) поставить только вот в какой location лучше его?
Дмитрий
|