
В настоящее время у меня есть файл 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 от обработки каких-либо дополнительных правил.