Перезапись URL, которая заметно переписывает (изменяет URL в адресной строке) - PullRequest
4 голосов
/ 18 января 2010

Я задал вопрос вроде дополнения к этому вопросу раньше:

Mod_rewrite незаметно: работает, когда целью является файл, а не когда это каталог

Теперь я действительно хочу, чтобы перезапись происходила визуально, потому что я переключил схемы URL и, хотя я хочу, чтобы старые ссылки работали, я хочу, чтобы пользователь увидел новую схему URL.

Так что это работает

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1

Но URL в адресной строке остается как http://example.com/oldscheme/foo.

Какой правильный способ сделать видимое переписывание, желательно просто с mod_rewrite, а не с чем-то клёвым с перенаправлением Location или что-то подобное?

Ответы [ 2 ]

6 голосов
/ 26 января 2010

Поскольку я не могу оставлять комментарии сейчас, я опубликую свое дополнение к комментарию Игнасио здесь.

На самом деле вы должны опубликовать перенаправление 301 (перемещено навсегда), так как вы описываете новую структуру каталогов сайта. Таким образом, ваш RewriteRule должен читать

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1  [R=301]
4 голосов
/ 18 января 2010

Оказывается, добавление кода "перенаправления" делает свое дело:

RewriteRule ^oldscheme/(.*)/?$  newscheme/$1  [R]

Очевидно, ретроспективно, но, надеюсь, это делает ответ более доступным для поиска.Я нашел это на этом превосходном "шпаргалке":

http://www.addedbytes.com/cheat-sheets/mod_rewrite-cheat-sheet/

...