Что-то никак не могу заставить работать средствами nginx такой вот
простейший редирект:
RedirectMatch 301 ^/forums/$ /forums/index.php
Вроде бы такая конструкция должна прокатить:
location = /forums/ { redirect /forums/index.php; }
но nginx-овский redirect зачем-то прицепляет паттерн в конец URI,
и выходит вот что:
2005/02/02 12:06:23 [debug] 18419#0: *2 find location: = "/forums/"
2005/02/02 12:06:23 [debug] 18419#0: *2 http cl:-1 max:1048576
2005/02/02 12:06:23 [debug] 18419#0: *2 http redirect handler
.....
Location: http://127.0.0.1:8080/forums/index.phpforums/
Более того, в следующем цикле URL опять почему-то совпадает, хотя
по идее не должен, получается:
2005/02/02 12:13:15 [debug] 18535#0: *2 find location: "/"
2005/02/02 12:13:15 [debug] 18535#0: *2 find location: = "/forums/"
2005/02/02 12:13:15 [debug] 18535#0: *2 find location: ~ "^.+\.php$"
2005/02/02 12:13:15 [debug] 18535#0: *2 http cl:-1 max:1048576
--> 2005/02/02 12:13:15 [debug] 18535#0: *2 http redirect handler <-- ?????
.....
Location: http://127.0.0.1:8080/forums/index.phpforums/index.phpforums/
Почему вылезает отмеченная строчка, ведь location /forums/ не совпал?
Ну и на следующем этапе:
http://127.0.0.1:8080/forums/index.phpforums/index.phpforums/index.phpforums/
и т.п.
Что я делаю не так? Может, какое-то непонимание логики работы location
и редиректов?
Да, кстати, как бы еще добавить в redirect возможность указывать 301 :)
Сейчас redirect просто добавляет полный URI к параметру.
На днях я полностью переписал rewrite - там будет возможность делать
редиректы.