Ejemplos de tutoriales de directivas de sintaxis predeterminadas para reescribir

Con la función de reescritura, puede modificar cualquier parte de un encabezado HTTP y, en el caso de las respuestas, puede modificar el cuerpo HTTP. Puede utilizar esta función para realizar una serie de tareas útiles, como eliminar encabezados HTTP innecesarios, enmascarar direcciones URL internas, redirigir páginas web y redirigir consultas o palabras clave.

En los ejemplos siguientes, primero debe crear una acción de reescritura y una directiva de reescritura. A continuación, vincula la directiva globalmente.

Este documento incluye los siguientes detalles:

  • Redirigir una URL externa a una URL interna
  • Redirigir una consulta
  • Reescritura de HTTP a HTTPS
  • Eliminación de encabezados no deseados
  • Reducción de redireccionamientos de servidores web
  • Enmascarar el encabezado del servidor
  • Conversión de texto sin formato a cadena codificada por URL y viceversa

Para obtener más información acerca de los comandos y las descripciones de sintaxis, consulte laReferencia de comando de reescriturapágina.

Redirigir una URL externa a una URL interna

En este ejemplo se describe cómo crear una acción de reescritura y una directiva de reescritura que redireccione una dirección URL externa a una dirección URL interna. Crear una acción, llamada act_external_to_internal, que realiza la reescritura. A continuación, crea una directiva llamada pol_external_to_internal.

Para redirigir una URL externa a una URL interna mediante la interfaz de línea de comandos

  • Para crear la acción de reescritura, en el símbolo del sistema, escriba:

    add rewrite action act_external_to_internal REPLACE 'http.req.hostname.server' "host_name_of_internal_Web_server"

  • Para crear la directiva de reescritura, en el símbolo del sistema de Citrix ADC, escriba:

    add rewrite policy pol_external_to_internal 'http.req.hostname.server.eq("host_name_of_external_Web_server")' act_external_to_internal

  • Vincular la directiva globalmente.

Para redirigir una URL externa a una URL interna mediante la utilidad de configuración

  1. Vaya a AppExpert > Reescribir > Acciones.

  2. En el panel de detalles, haga clic en Agregar.

  3. En el cuadro de diálogo Crear acción de reescritura, escriba el nombre act_external_to_internal.

  4. Para reemplazar el nombre de host del servidor HTTP por el nombre del servidor interno, elija Reemplazar en el cuadro de lista Tipo.

  5. En el campo Nombre de encabezado, escriba Host.

  6. En el campo Expresión de cadena para texto de reemplazo, escriba el nombre de host interno del servidor web.

  7. Haga clic en Create y, luego, en Close.

  8. En el panel de navegación, haga clic en Directivas.

  9. En el panel de detalles, haga clic en Agregar.

  10. En el campo Nombre, escriba pol_external_to_internal. Esta directiva detectará conexiones con el servidor web.

  11. En el menú desplegable Acción, elija la acción act_external_to_internal.

  12. En el editor de expresiones, cree la siguiente expresión:

HTTP.REQ.HOSTNAME.SERVER.EQ("www.example.com")
  1. Enlazar su nueva directiva globalmente.

Redirigir una consulta

En este ejemplo se describe cómo crear una acción de reescritura y una directiva de reescritura que redirige una consulta a la dirección URL adecuada. En el ejemplo se supone que la solicitud contiene un encabezado Host establecido en www.example.com y un método GET con la cadena /query.cgi?server=5. La redirección extrae el nombre de dominio del encabezado de host y el número de la cadena de consulta, y redirige la consulta del usuario al servidor web5.example.com, donde se procesa el resto de la consulta del usuario.

Nota: Aunque los siguientes comandos aparecen en varias líneas, debe introducirlos en una sola línea sin saltos de línea.

Para redirigir una consulta a la dirección URL apropiada mediante la línea de comandos

  • Para crear una acción de reescritura denominada act_redirect_query que reemplace el nombre de host del servidor HTTP por el nombre del servidor interno, escriba:

    add rewrite action act_redirect_query REPLACE q#http.req.header(“Host”).before_str(“.example.com”)’ ‘“Web” + http.req.url.query.value(“server”)#

  • Para crear una directiva de reescritura denominada pol_redirect_query, escriba los siguientes comandos en el símbolo del sistema de Citrix ADC. Esta directiva detecta conexiones al servidor web que contienen una cadena de consulta. No aplique esta directiva a conexiones que no contengan una cadena de consulta:

    add rewrite policy pol_redirect_query q#http.req.header(“Host”).eq(“www.example.com”) && http.req.url.contains(“?”)’ act_redirect_query#

  • Enlazar su nueva directiva globalmente.

Debido a que esta directiva de reescritura es muy específica y debe ejecutarse antes de cualquier otra directiva de reescritura, es aconsejable asignarle una alta prioridad. Si le asigna una prioridad de 1, se evaluará primero.

Reescritura de HTTP a HTTPS

En este ejemplo se describe cómo reescribir las respuestas del servidor web para buscar todas las direcciones URL que comiencen con la cadena “http” y reemplazar esa cadena por “https”. Puede usar esto para evitar tener que actualizar páginas web después de mover un servidor de HTTP a HTTPS.

Para redirigir direcciones URL HTTP a HTTPS mediante la interfaz de línea de comandos

  • Para crear una acción de reescritura denominada act_replace_http_with_https que reemplace todas las instancias de la cadena “http” por la cadena “https”, introduzca el siguiente comando:

    add rewrite action act_replace_http_with_https replace_all ‘http.res.body (100) ‘’ “https” ‘-pattern http

  • Para crear una directiva de reescritura denominada pol_replace_http_with_https que detecte conexiones con el servidor web, escriba el siguiente comando:

    agregar directiva de reescritura pol_replace_http_with_https TRUE act_replace_http_with_https NOREWRITE

  • Enlazar su nueva directiva globalmente.

Para solucionar problemas de esta operación de reescritura, consulte “Caso práctico: la directiva de reescritura para convertir enlaces HTTP a HTTPS no funciona.”

Eliminación de encabezados no deseados

En este ejemplo se explica cómo utilizar una directiva Rewrite para eliminar encabezados no deseados. Específicamente, el ejemplo muestra cómo eliminar los encabezados siguientes:

  • Aceptar Encabezado de codificación. Al quitar el encabezado Aceptar codificación de las respuestas HTTP, se evita la compresión de la respuesta.
  • Encabezado Ubicación de contenido. La eliminación del encabezado Ubicación de contenido de las respuestas HTTP impide que el servidor proporcione a un hacker información que podría permitir una infracción de seguridad.

Para eliminar encabezados de las respuestas HTTP, se crea una acción de reescritura y una directiva de reescritura, y se vincula la directiva globalmente.

Para crear la acción de reescritura adecuada mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba uno de los comandos siguientes para quitar el encabezado Aceptar codificación e impedir la compresión de la respuesta o quitar el encabezado Ubicación del contenido:

  • agregar acción de reescritura “act_remove-ae” delete_http_header “Accept-Encoding”
  • agregar acción de reescritura “act_remove-cl” delete_http_header “Content-Location”

Para crear la directiva de reescritura adecuada mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba uno de los comandos siguientes para quitar el encabezado Aceptar codificación o el encabezado Ubicación de contenido:

  • agregar directiva de reescritura “pol_remove-ae” true “act_remove-ae”
  • agregar la directiva de reescritura “pol_remove-cl” true “act_remove-cl”

Para enlazar la directiva globalmente mediante la interfaz de línea de comandos

En el símbolo del sistema, escriba uno de los siguientes comandos, según corresponda, para enlazar globalmente la directiva que ha creado:

  • bind rewrite global pol_remove_ae 100
  • bind rewrite global pol_remove_cl 200

Reducción de redireccionamientos de servidores web

En este ejemplo se explica cómo utilizar una directiva de reescritura para modificar las conexiones a la página principal y otras direcciones URL que terminan con una barra diagonal (/) a la página de índice predeterminada del servidor, lo que evita redirecciones y reduce la carga en el servidor.

Para modificar las solicitudes HTTP de nivel de directorio para incluir la página principal predeterminada mediante la línea de comandos

  • Para crear una acción de reescritura denominada action-default-homepage que modifique las URL que terminan en una barra diagonal para incluir la página principal predeterminada index.html, escriba:

    add rewrite action “action-default-homepage” replace q#http.req.url.path “/” “/index.html”#

  • Para crear una directiva de reescritura denominada policy-default-homepage que detecte las conexiones a la página principal y aplique la nueva acción, escriba:

    add rewrite policy “policy-default-homepage” q#http.req.url.path.EQ(“/”) “action-default-homepage”#

  • Enlazar globalmente su nueva directiva para ponerla en vigor.

Enmascarar el encabezado del servidor

En este ejemplo se explica cómo utilizar una directiva Rewrite para enmascarar la información del encabezado Server en las respuestas HTTP del servidor web. Ese encabezado contiene información que los hackers pueden usar para poner en peligro su sitio web. Si bien enmascarar el encabezado no impedirá que un hacker experto descubra información sobre su servidor, hará que piratear su servidor web sea más difícil y animará a los hackers a elegir objetivos menos protegidos.

Para enmascarar el encabezado del servidor en las respuestas desde la línea de comandos

  1. Para crear una acción de reescritura denominada act_mask-server que reemplace el contenido del encabezado del servidor por una cadena no informativa, escriba:

    add rewrite action “act_mask-server” replace “http.RES.HEADER(\“Server\”)” “\“Web Server 1.0\””

  2. Para crear una directiva de reescritura denominada pol_mask-server que detecte todas las conexiones, escriba:

    add rewrite policy “pol_mask-server” true “act_mask-server”

  3. Enlazar globalmente su nueva directiva para ponerla en vigor.

Cómo convertir texto sin formato a cadena codificada por URL y viceversa

Las siguientes expresiones convierten texto sin formato en cadena codificada por URL y viceversa:

  1. URL_RESERVED_CHARS_SAFE (cadena a URL codificada).

    Ejemplo

    ("abc def&123").URL_RESERVED_CHARS_SAFE
    Output will be
    “abc%20def%26123” which is url encoded.
    
  2. SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE. (URL codificada en cadena)

    Ejemplo:

    ("abc%20def%26123").SET_TEXT_MODE(URLENCODED).DECODE_USING_TEXT_MODE
    Output will be
    “abc def&123”