Como redirecionar por URL aninhado dinâmico .htaccess

Como redirecionar por URL aninhado dinâmico .htaccess

Como usar a regra de gravação?

preciso redirecionar

www.example.com/accesories

para

www.example.com/accesories/item

ATUALIZAR:Se eu usar Redirect /accesories /accesories/itemsrecebo:

www.example.com//accesories/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/items/

Responder1

Redirect /accesories /accesories/items

Sim, isso resultará em um loop de redirecionamento porque a Redirectdiretiva mod_alias corresponde ao prefixo, conformeos documentos do Apache(destacando o meu):

...qualquer pedidocomeçando comURL-path retornará uma solicitação de redirecionamento ao cliente no local do URL de destino.Informações adicionais do caminho além do caminho do URL correspondente serão anexadas ao URL de destino.

Se você quiser redirecionar apenas esse URL específico, você precisará usar a RedirectMatchdiretiva*1em vez disso, isso corresponde a um regex. Por exemplo:

RedirectMatch ^/accesories$ /accesories/items

*1A menos que você já esteja usando o mod_rewrite em outras diretivas (é por isso que perguntei "Quais outras diretivas você tem?"), nesse caso pode ser preferível usar o mod_rewrite.

"dinâmico" - porque acessórios é uma categoria com produtos, mas não quero mostrar aos produtos wyhos a necessidade de redirecionar para/acessórios/itens

Não tenho muita certeza do que você quer dizer com isso, mas se precisar redirecionar /accesories/<products>para /accesories/items, onde <products>pode estar qualquer segmento de caminho único, exceto itemsentão, você precisaria fazer algo como o seguinte usando um lookahead negativo na RedirectMatchdiretiva (ou use mod_rewrite ). Por exemplo:

RedirectMatch ^/accesories(/(?!items)[^/]*)?$ /accesories/items

Os redirecionamentos acima /accesories, /accesories/e /accesories/<anything>, mas não /accesories/items(porque isso criaria um loop de redirecionamento) para /accesories/items.

Observe que esses são redirecionamentos 302 (temporários). (Sempre teste com 302s para evitar possíveis problemas de cache e só mude para 301 mais tarde se essa for a intenção.)

A ordem das diretivas .htaccesspode ser importante. Os redirecionamentos externos geralmente precisam ficar perto do topo do .htaccessarquivo.

informação relacionada