по поводу кодов редиректа вэб-сервера:
есть 2 кода редиректа: 301 (Moved permanently) и 302 (Found)
по идее, вэб-сервер возвращает эти коды, если запрошенный URL устарел, и вместо него должен использоваться новый (и этот новый прилагается к тексту ответа).
точнее, это верно для кода 301 (Moved permanently).
код 302 (Found) должен быть возвращен, если страница "перемещена временно", хотя, мне в голову не приходит, когда эта ситуация возможна.
так вот, как выснилось, код 301 - опасная хрень: однажды получив этот код, браузер запомнит , что при обращении к старому URL нужно вместо этого обращаться по такому-то новому адресу. и в следующий раз, если будет инициирован переход на старый адрес (например, он будет введен в адресную строку) - браузер сразу отправит запрос на новый адрес.
и это не вытравишь никакими очистками кеша (по крайней мере, на Хроме)
то есть, в случае чего, "перегадать" не получится (например, если окажется, что твой сайт содержал баг и редиректил не туда)
в отличие от 301, 302 к такому ужасу не приводит, браузер каждый раз запрашивает вэб-сервер по старому адресу, и переходит на новы только получив в очередной раз код 302.
мораль: я бы не касался 301-го кода даже двенадцациметровой палкой
но, с другой стороны, это может негативно сказаться на SEO (не изучал этот вопрос)