Cómo redirigir mediante URL anidada dinámica .htaccess

Cómo redirigir mediante URL anidada dinámica .htaccess

¿Cómo utilizar la regla de escritura?

necesito redirigir

www.example.com/accesories

a

www.example.com/accesories/item

ACTUALIZAR:Si lo uso Redirect /accesories /accesories/itemsrecibo:

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/

Respuesta1

Redirect /accesories /accesories/items

Sí, eso dará como resultado un bucle de redireccionamiento porque la Redirectdirectiva mod_alias coincide con el prefijo, segúnlos documentos de apache(resaltando el mío):

...cualquier solicitudempezando conLa ruta URL devolverá una solicitud de redireccionamiento al cliente en la ubicación de la URL de destino.Se agregará información de ruta adicional más allá de la ruta URL coincidente a la URL de destino.

Si desea redirigir solo esa URL específica, deberá utilizar la RedirectMatchdirectiva*1en cambio, eso coincide con una expresión regular. Por ejemplo:

RedirectMatch ^/accesories$ /accesories/items

*1A menos que ya esté usando mod_rewrite en otras directivas (por eso pregunté "¿Qué otras directivas tiene?"), en cuyo caso puede ser preferible usar mod_rewrite en su lugar.

"dinámico" - porque accesorios es una categoría con productos pero no quiero mostrar que los productos de wyhos deben redirigir a /accesorios/items

No estoy muy seguro de lo que quieres decir con esto, pero si necesitas redirigir /accesories/<products>a /accesories/items, donde <products>puede haber cualquier segmento de ruta único, excepto que itemstendrías que hacer algo como lo siguiente usando una búsqueda anticipada negativa en la RedirectMatchdirectiva (o usar mod_rewrite ). Por ejemplo:

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

Lo anterior redirige a /accesories, /accesories/y /accesories/<anything>, pero no /accesories/items(porque eso crearía un bucle de redireccionamiento) a /accesories/items.

Tenga en cuenta que estas son redirecciones 302 (temporales). (Siempre pruebe con 302 para evitar posibles problemas de almacenamiento en caché y solo cambie a 301 más tarde si esa es la intención).

El orden de las directivas .htaccesspuede ser importante. Las redirecciones externas generalmente deben ubicarse cerca de la parte superior del .htaccessarchivo.

información relacionada