RedirectPermanent против RewriteRule

RedirectPermanent против RewriteRule

В настоящее время у меня есть файл perm_redirects.conf, который включается в мой стек конфигурации Apache, где есть строки в формате

RedirectPermanent /old/url/path /new/url/path

Похоже, мне необходимо использовать абсолютный URL для нового пути, например: http://example.com/new/url/path. В журналах я получаю"неполная цель перенаправления /new/url/path была исправлена ​​наhttp://example.com/new/url/path."(перефразировано).

В документации 2.2 для RewriteRuleв нижней части показано следующее как допустимое перенаправление, только с url-paths вместо abs URL для правой стороны перенаправления:

RewriteRule ^/old/url/path(.*) /new/url/path$1 [R]

Но я не могу заставить этот формат работать, чтобы воспроизвести функциональность версии RedirectPermanent. Возможно ли это?

решение1

ВФМ:

RewriteEngine On
RewriteOptions Inherit 
RewriteRule ^/old/url/path(.*) /new/url/path$1 [R]

Результат:

wget http://localhost/old/url/path/foo
--2010-08-09 15:41:20--  http://localhost/old/url/path/foo
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 302 Found
Location: http://localhost/new/url/path/foo [following]
--2010-08-09 15:41:20--  http://localhost/new/url/path/foo

Примечание (1) вам, вероятно, нужно [R=permanent]. По умолчанию это временное перенаправление. (2) Вам не нужно просто [L], так как это приведет к внутреннему перенаправлению, невидимому для конечного пользователя (не вызванному L, действие по умолчанию "" является внутренним перенаправлением). RedirectPermanent генерирует ответ 3xx для конечного пользователя. Вы можете добавить L, т. е. [R=permanent,L], чтобы остановить mod_rewrite от обработки каких-либо дополнительных правил.

Связанный контент