2010-01-18 1 views
4

Я спросил своего рода дополнения к этому вопросу перед:URL переписывания, что заметно переписывает (изменяет URL в адресной строке)

Mod_rewrite invisibly: works when target is a file, not when it's a directory

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

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

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

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

Какой правильный способ сделать видимый переписать, желательно только с mod_rewrite, а не что-то kludgy с переадресацией местоположения или что-то вроде этого?

ответ

6

Как я не могу оставлять комментарии теперь, я вывешу мое дополнение к комментарий Игнасио здесь.

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

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

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

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

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

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

+0

Параметр [R] «заставляет» переписать URL-адрес, если я прав. – Ropstah

+0

В результате получается код ответа 302 вместе с заголовком 'Location', отправляемым в браузер. Без него, если возможно, модифицируются только внутренние структуры httpd. –

 Смежные вопросы

  • Нет связанных вопросов^_^