RedirectPermanent vs RewriteRule

RedirectPermanent vs RewriteRule

Atualmente tenho um arquivo perm_redirects.conf que é incluído na minha pilha de configuração do Apache, onde tenho linhas no formato

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

Parece que sou obrigado a usar um URL absoluto para o novo caminho, por exemplo: http://example.com/new/url/path. Nos logs que estou recebendo"alvo de redirecionamento incompleto /new/url/path foi corrigido parahttp://example.com/new/url/path."(parafraseado).

Nos documentos 2.2 para RewriteRule, na parte inferior eles mostram o seguinte como sendo um redirecionamento válido, com apenas os caminhos de URL em vez de um URL abs para o lado direito do redirecionamento:

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

Mas não consigo fazer esse formato funcionar para replicar a funcionalidade da RedirectPermanentversão. Isso é possível?

Responder1

WFM:

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

Resultado:

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

Nota (1) você provavelmente deseja [R = permanente]. O padrão é um redirecionamento temporário. (2) Você não deseja apenas o [L], pois isso resultará em um redirecionamento interno invisível para o usuário final (não causado pelo L, a ação padrão "" é um redirecionamento interno). RedirectPermanent gera uma resposta 3xx para o usuário final. Você pode adicionar o L, ou seja, [R=permanent,L] para impedir que o mod_rewrite processe mais regras.

informação relacionada