¿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/items
recibo:
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 Redirect
directiva 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 RedirectMatch
directiva*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 items
tendrías que hacer algo como lo siguiente usando una búsqueda anticipada negativa en la RedirectMatch
directiva (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 .htaccess
puede ser importante. Las redirecciones externas generalmente deben ubicarse cerca de la parte superior del .htaccess
archivo.