Migración de las reglas mod_rewrite de Apache a la política avanzada
El servidor HTTP Apache proporciona un motor conocido como mod_rewrite para reescribir las URL de solicitudes HTTP. Si migra las reglas mod_rewrite de Apache a NetScaler, aumentará el rendimiento del servidor de fondo. Además, dado que NetScaler suele equilibrar la carga de varios (a veces miles) de servidores web, después de migrar las reglas a NetScaler, tendrá un único punto de control para estas reglas.
A continuación se presentan ejemplos de funciones mod_rewrite y traducciones de estas funciones en directivas Rewrite y Responder en NetScaler.
Convertir variaciones de URL en URL canónicas
En algunos servidores web puede tener varias URL para un recurso. Aunque las URL canónicas deben utilizarse y distribuirse, otras URL pueden existir como accesos directos o URL internas. Puede asegurarte de que los usuarios vean la URL canónica independientemente de la URL utilizada para realizar una solicitud inicial.
En los siguientes ejemplos, la URL /~user se convierte en /u/user.
Solución mod_rewrite de Apache para convertir una URL
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2[R]
<!--NeedCopy-->
Solución NetScaler para convertir una URL
add responder action act1 redirect '"/u/"+HTTP.REQ.URL.AFTER_STR("/~")'
add responder policy pol1 'HTTP.REQ.URL.STARTSWITH("/~") && HTTP.REQ.URL.LENGTH.GT(2)' act1
bind responder global pol1 100
<!--NeedCopy-->
Conversión de variaciones de nombres de host en nombres de host canónicos
Puede forzar el uso de un nombre de host concreto para llegar a un sitio. Por ejemplo, puede imponer el uso de www.example.com en lugar de ejemplo.com.
Solución mod_rewrite de Apache para aplicar un nombre de host concreto a sitios que se ejecutan en un puerto distinto del 80
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://www.example.com:%{SERVER_PORT}/$1 [L,R]
<!--NeedCopy-->
Solución mod_rewrite de Apache para aplicar un nombre de host concreto a sitios que se ejecutan en el puerto 80
RewriteCond %{HTTP_HOST} !^www.example.com
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www.example.com/$1 [L,R]
<!--NeedCopy-->
Solución de NetScaler para aplicar un nombre de host determinado a los sitios que se ejecutan en un puerto distinto del 80
add responder action act1 redirect '"http://www.example.com:"+CLIENT.TCP.DSTPORT+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&!HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
Solución de NetScaler para aplicar un nombre de host determinado a los sitios que se ejecutan en el puerto 80
add responder action act1 redirect '"http://www.example.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HOSTNAME.CONTAINS("www.example.com")&&!HTTP.REQ.HOSTNAME.EQ("")&&HTTP.REQ.HOSTNAME.PORT.EQ(80)&&HTTP.REQ.HOSTNAME.CONTAINS("example.com")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
Mover la raíz de un documento
Normalmente, la raíz de documentos de un servidor web se basa en la URL “/”. Sin embargo, la raíz del documento puede ser cualquier directorio. Puede redirigir el tráfico a la raíz del documento si cambia del directorio “/” de nivel superior a otro directorio.
En los ejemplos siguientes, cambiará la raíz del documento de/a /e/www. Los dos primeros ejemplos simplemente reemplazan una cadena por otra. El tercer ejemplo es más universal porque, además de sustituir el directorio raíz, conserva el resto de la URL (la ruta y la cadena de consulta), por ejemplo, redireccionando /example/file.html a /e/www/example/file.html.
Solución mod_rewrite de Apache para mover la raíz del documento
RewriteEngine on
RewriteRule ^/$ /e/www/ [R]
<!--NeedCopy-->
Solución NetScaler para mover la raíz del documento
add responder action act1 redirect '"/e/www/"'
add responder policy pol1 'HTTP.REQ.URL.EQ("/")' act1
bind responder global pol1 100
<!--NeedCopy-->
Solución NetScaler para mover la raíz del documento y agregar información de ruta a la solicitud
add responder action act1 redirect '"/e/www"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.URL.STARTSWITH("/e/www/")' act1
bind responder global pol1 100 END
<!--NeedCopy-->
Trasladar directorios de inicio a un nuevo servidor web
Es posible que quiera redirigir las solicitudes que se envían a los directorios principales de un servidor Web a otro servidor Web. Por ejemplo, si un nuevo servidor web sustituye a uno antiguo a lo largo del tiempo, al migrar los directorios principales a la nueva ubicación, deberá redirigir las solicitudes de los directorios principales migrados al nuevo servidor web.
En los ejemplos siguientes, el nombre de host del nuevo servidor web es newserver.
Solución mod_rewrite de Apache para redirigir a otro servidor web
RewriteRule ^/(.+) http://newserver/$1 [R,L]
<!--NeedCopy-->
Solución NetScaler para redirigir a otro servidor web (método 1)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.REGEX_MATCH(re#^/(.+)#)' act1
bind responder global pol1 100 END
<!--NeedCopy-->
Solución NetScaler para redirigir a otro servidor web (método 2)
add responder action act1 redirect '"http://newserver"+HTTP.REQ.URL'
add responder policy pol1 'HTTP.REQ.URL.LENGTH.GT(1)' act1
bind responder global pol1 100 END
<!--NeedCopy-->
Trabajar con directorios de inicio estructurados
Normalmente, un sitio con miles de usuarios tiene un diseño de directorio home estructurado. Por ejemplo, cada directorio principal puede residir en un subdirectorio que recibe el nombre del primer carácter del nombre de usuario. Por ejemplo, el directorio home de jsmith (/~jsmith/anypath) podría ser /home/j/smith/.www/anypath, y el directorio home de rvalveti (/~rvalveti/anypath) podría ser /home/r/rvalveti/.www/anypath.
En los siguientes ejemplos se redirigen las solicitudes al directorio principal.
Solución mod_rewrite de Apache para directorios de inicio estructurados
RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3
<!--NeedCopy-->
Solución NetScaler para directorios principales estructurados
Solución NetScaler para directorios principales estructurados
add rewrite action act1 replace 'HTTP.REQ.URL' '"/home/"+ HTTP.REQ.URL.AFTER_STR("~").PREFIX(1)+"/"+ HTTP.REQ.URL.AFTER_STR("~").BEFORE_STR("/")+"/.www"+HTTP.REQ.URL.SKIP('/',1)'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.STARTSWITH("/~")' act1
bind rewrite global pol1 100
<!--NeedCopy-->
Redirigir URL no válidas a otros servidores web
Si una URL no es válida, debe redirigirse a otro servidor web. Por ejemplo, debe redirigir a otro servidor web si un archivo que lleva el nombre de una URL no existe en el servidor que lleva el nombre en la URL.
En Apache, puede realizar esta comprobación usando mod_rewrite. En NetScaler, una llamada HTTP puede comprobar si hay un archivo en un servidor mediante la ejecución de un script en el servidor. En los siguientes ejemplos de NetScaler, un script denominado file_check.cgi procesa la URL y utiliza esta información para comprobar la presencia del archivo de destino en el servidor. El script devuelve TRUE o FALSE y NetScaler utiliza el valor que devuelve el script para validar la directiva.
Además de realizar la redirección, NetScaler puede agregar encabezados personalizados o, como en el segundo ejemplo de NetScaler, puede agregar texto en el cuerpo de la respuesta.
Solución mod_rewrite de Apache para la redirección si una URL es incorrecta
RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f
RewriteRule ^(.+) http://webserverB.com/$1 [R]
<!--NeedCopy-->
Solución NetScaler para la redirección si una URL es incorrecta (método 1)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 redirect '"http://webserverB.com"+HTTP.REQ.URL'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
<!--NeedCopy-->
Solución NetScaler para la redirección si una URL es incorrecta (método 2)
add HTTPCallout Call
set policy httpCallout Call -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url.path -headers Name("ddd")
add responder action act1 respondwith '"HTTP/1.1 302 Moved Temporarily\r\nLocation: http://webserverB.com"+HTTP.REQ.URL+"\r\n\r\nHTTPCallout Used"'
add responder policy pol1 '!HTTP.REQ.HEADER("Name").EXISTS && !SYS.HTTP_CALLOUT(call)' act1
bind responder global pol1 100
<!--NeedCopy-->
Reescritura de una URL en función del tiempo
Puede reescribir una URL en función de la hora. En los siguientes ejemplos se cambia una solicitud de example.html a ejemplo.day.html o ejemplo.night.html, según la hora del día.
Solución mod_rewrite de Apache para reescribir una URL en función de la hora
RewriteCond %{TIME_HOUR}%{TIME_MIN} >0700
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule ^example.html$ example.day.html [L]
RewriteRule ^example.html$ example.night.html
<!--NeedCopy-->
Solución de NetScaler para reescribir una URL en función de la hora
add rewrite action act1 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"day."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.PATH.SUFFIX('.',0)' '"night."'
add rewrite policy pol1 'SYS.TIME.WITHIN(LOCAL 07h 00m,LOCAL 18h 59m)' act1
add rewrite policy pol2 'true' act2
bind rewrite global pol1 101
bind rewrite global pol2 102
<!--NeedCopy-->
Redirigir a un nuevo nombre de archivo (invisible para el usuario)
Si cambia el nombre de una página Web, puede seguir siendo compatible con la URL anterior para garantizar la compatibilidad con versiones anteriores y evitar que los usuarios reconozcan que se ha cambiado el nombre de la página.
En los dos primeros ejemplos, el directorio base es /~quux/. El tercer ejemplo acomoda cualquier directorio base y la presencia de cadenas de consulta en la URL.
Solución mod_rewrite de Apache para gestionar un cambio de nombre de archivo en una ubicación fija
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^foo.html$ bar.html
<!--NeedCopy-->
Solución NetScaler para gestionar un cambio de nombre de archivo en una ubicación fija
add rewrite action act1 replace 'HTTP.REQ.URL.AFTER_STR("/~quux").SUBSTR("foo.html")' '"bar.html"'
add rewrite policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/foo.html")' act1
bind rewrite global pol1 100
<!--NeedCopy-->
Solución de NetScaler para gestionar un cambio de nombre de archivo independientemente del directorio base o de las cadenas de consulta de la URL
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"bar.html"'
Add rewrite policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("foo.html")' act1
Bind rewrite global pol1 100
<!--NeedCopy-->
Redirigir al nuevo nombre de archivo (URL visible por el usuario)
Si cambia el nombre de una página Web, es posible que quiera seguir siendo compatible con la URL anterior por razones de compatibilidad con versiones anteriores y permitir que los usuarios vean que se ha cambiado el nombre de la página cambiando la URL que se muestra en el explorador.
En los dos primeros ejemplos siguientes, la redirección se produce cuando el directorio base es /~quux/. El tercer ejemplo acomoda cualquier directorio base y la presencia de cadenas de consulta en la URL.
Solución mod_rewrite de Apache para cambiar el nombre del archivo y la URL mostrada en el explorador
RewriteEngine on
RewriteBase /~quux/
RewriteRule ^old.html$ new.html [R]
<!--NeedCopy-->
Solución NetScaler para cambiar el nombre del archivo y la URL mostrada en el explorador
add responder action act1 redirect 'HTTP.REQ.URL.BEFORE_STR("foo.html")+"new.html"'
add responder policy pol1 'HTTP.REQ.URL.ENDSWITH("/~quux/old.html")' act1
bind responder global pol1 100
<!--NeedCopy-->
Solución NetScaler para cambiar el nombre del archivo y la URL mostrada en el explorador independientemente del directorio base o de las cadenas de consulta de la URL
add responder action act1 redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("old.html")+"new.html"+HTTP.REQ.URL.AFTER_STR("old.html")'
add responder policy pol1 'HTTP.REQ.URL.PATH.CONTAINS("old.html")' act1
bind responder global pol1 100
<!--NeedCopy-->
Adaptar contenido dependiente del explorador
Para adaptarse a las limitaciones específicas del explorador (al menos para páginas importantes de nivel superior), a veces es necesario establecer restricciones en el tipo y la versión del explorador. Por ejemplo, es posible que quiera establecer una versión máxima para las últimas variantes de Netscape, una versión mínima para los exploradores Lynx y una versión media de las funciones para todas las demás.
Los siguientes ejemplos actúan sobre el encabezado HTTP “User-Agent”, de modo que si este encabezado comienza por “Mozilla/3”, la página MyPage.html se reescribe en MyPage.ns.html. Si el explorador es “Lynx” o “Mozilla” versión 1 o 2, la URL se convierte en MyPage.20.html. Todos los demás exploradores reciben la página MyPage.32.html.
Solución mod_rewrite de Apache para configuraciones específicas del explorador
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*
RewriteRule ^MyPage.html$ MyPage.NS.html [L]
RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*
RewriteRule ^MyPage.html$ MyPage.20.html [L]
RewriteRule ^fMyPage.html$ MyPage.32.html [L]
NetScaler solution for browser-specific settings
add patset pat1
bind patset pat1 Mozilla/1
bind Patset pat1 Mozilla/2
bind patset pat1 Lynx
bind Patset pat1 Mozilla/3
add rewrite action act1 insert_before 'HTTP.REQ.URL.SUFFIX' '"NS."'
add rewrite action act2 insert_before 'HTTP.REQ.URL.SUFFIX' '"20."'
add rewrite action act3 insert_before 'HTTP.REQ.URL.SUFFIX' '"32."'
add rewrite policy pol1 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").EQ(4)' act1
add rewrite policy pol2 'HTTP.REQ.HEADER("User-Agent").STARTSWITH_INDEX("pat1").BETWEEN(1,3)' act2
add rewrite policy pol3 '!HTTP.REQ.HEADER("User-Agent").STARTSWITH_ANY("pat1")' act3
bind rewrite global pol1 101 END
bind rewrite global pol2 102 END
bind rewrite global pol3 103 END
<!--NeedCopy-->
Bloqueo del acceso de robots
Puede impedir que un robot recupere páginas de un directorio específico o de un conjunto de directorios para facilitar el tráfico hacia y desde estos directorios. Puede restringir el acceso en función de la ubicación específica o bloquear solicitudes basándose en la información de los encabezados HTTP User-Agent.
En los siguientes ejemplos, la ubicación web que se va a bloquear es /~quux/foo/arc/, las direcciones IP que se van a bloquear son 123.45.67.8 y 123.45.67.9 y el nombre del robot es nameOfBadRobot.
Solución mod_rewrite de Apache para bloquear una ruta y un encabezado User-Agent
RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.*
RewriteCond %{REMOTE_ADDR} ^123.45.67.[8-9]$
RewriteRule ^/~quux/foo/arc/.+ - [F]
<!--NeedCopy-->
Solución de NetScaler para bloquear una ruta y un encabezado de User-Agent
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 'HTTP.REQ.HEADER("User_Agent").STARTSWITH("NameOfBadRobot")&&CLIENT.IP.SRC.EQ(123.45.67.8)&&CLIENT.IP.SRC.EQ(123.45.67.9) && HTTP.REQ.URL.STARTSWITH("/~quux/foo/arc")' act1
bind responder global pol1 100
<!--NeedCopy-->
Bloqueo del acceso a imágenes en línea
Si encuentra gente que va frecuentemente a su servidor para copiar gráficos en línea para su propio uso (y generar tráfico innecesario), es posible que quiera restringir la capacidad del explorador para enviar un encabezado HTTP Referer.
En el ejemplo siguiente, los gráficos se encuentran en Example.
Solución mod_rewrite Apache para bloquear el acceso a una imagen en línea
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.\*$
RewriteRule .\*.gif$ - [F]
<!--NeedCopy-->
Solución NetScaler para bloquear el acceso a una imagen en línea
add patset pat1
bind patset pat1 .gif
bind patset pat1 .jpeg
add responder action act1 respondwith '"HTTP/1.1 403 Forbidden\r\n\r\n"'
add responder policy pol1 '!HTTP.REQ.HEADER("Referer").EQ("") && !HTTP.REQ.HEADER("Referer").STARTSWITH("http://www.quux-corp.de/~quux/")&&HTTP.REQ.URL.ENDSWITH_ANY("pat1")' act1
bind responder global pol1 100
<!--NeedCopy-->
Creación de vínculos sin extensión
Para evitar que los usuarios conozcan los detalles de la aplicación o del script del lado del servidor, puede ocultar las extensiones de archivo a los usuarios. Para ello, es posible que quiera admitir enlaces sin extensión. Puede lograr este comportamiento mediante reglas de reescritura para agregar una extensión a todas las solicitudes o agregar extensiones a las solicitudes de forma selectiva.
Los dos primeros de los siguientes ejemplos muestran cómo agregar una extensión a todas las URL de solicitud. En el último ejemplo, se agrega una de las dos extensiones de archivo. Tenga en cuenta que en el último ejemplo, el módulo mod_rewrite puede encontrar fácilmente la extensión del archivo porque este módulo reside en el servidor web. Por el contrario, NetScaler debe invocar una llamada HTTP para comprobar la extensión del archivo solicitado en el servidor web. Según la respuesta de llamada, NetScaler agrega la extensión.html o.php a la URL de la solicitud.
Nota
En el segundo ejemplo de NetScaler, se utiliza una llamada HTTP para consultar un script denominado file_check.cgi alojado en el servidor. Este script comprueba si el argumento que se proporciona en la llamada es un nombre de archivo válido.
Solución mod_rewrite de Apache para agregar una extensión.php a todas las solicitudes
RewriteRule ^/?([a-z]+)$ $1.php [L]
<!--NeedCopy-->
Directiva de NetScaler para agregar una extensión.php a todas las solicitudes
add rewrite action act1 insert_after 'HTTP.REQ.URL' '".php"'
add rewrite policy pol1 'HTTP.REQ.URL.PATH.REGEX_MATCH(re#^/([a-z]+)$#)' act1
bind rewrite global pol1 100
<!--NeedCopy-->
Solución mod_rewrite de Apache para agregar extensiones.html o.php a las solicitudes
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.html –f
RewriteRule ^/?([a-zA-Z0-9]+)$ $1.html [L]
<!--NeedCopy-->
Directiva de NetScaler para agregar extensiones.html o.php a las solicitudes
add HTTPCallout Call_html
add HTTPCallout Call_php
set policy httpCallout Call_html -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".html"
set policy httpCallout Call_php -IPAddress 10.102.59.101 -port 80 -hostExpr '"10.102.59.101"' -returnType BOOL -ResultExpr 'HTTP.RES.BODY(100).CONTAINS("True")' -urlStemExpr '"/cgi-bin/file_check.cgi"' -parameters query=http.req.url+".php"
add patset pat1
bind patset pat1 .html
bind patset pat1 .php
bind patset pat1 .asp
bind patset pat1 .cgi
add rewrite action act1 insert_after 'HTTP.REQ.URL.PATH' '".html"'
add rewrite action act2 insert_after "HTTP.REQ.URL.PATH" '".php"'
add rewrite policy pol1 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_html)' act1
add rewrite policy pol2 '!HTTP.REQ.URL.CONTAINS_ANY("pat1") && SYS.HTTP_CALLOUT(Call_php)' act2
bind rewrite global pol1 100 END
bind rewrite global pol2 101 END
<!--NeedCopy-->
Redirigir un URI de trabajo a un nuevo formato
Supongamos que tiene un conjunto de URL de trabajo similares a las siguientes:
/index.php?id=nnnn
<!--NeedCopy-->
Para cambiar estas URL a /nnnn y asegurarse de que los motores de búsqueda actualizan sus índices al nuevo formato URI, debe hacer lo siguiente:
- Redirige los URI antiguos a los nuevos para que los motores de búsqueda actualicen sus índices.
- Vuelva a escribir el nuevo URI en el anterior para que el script index.php se ejecute correctamente.
Para lograrlo, puede insertar código de marcador en la cadena de consulta (asegurándose de que los visitantes no vean el código del marcador) y, a continuación, elimine el código de marcador del script index.php.
En los siguientes ejemplos se redirige de un enlace antiguo a un nuevo formato solo si no hay ningún marcador en la cadena de consulta. El enlace que utiliza el nuevo formato se vuelve a escribir en el formato anterior y se agrega un marcador a la cadena de consulta.
Solución mod_rewrite de Apache
RewriteCond %{QUERY_STRING} !marker
RewriteCond %{QUERY_STRING} id=([-a-zA-Z0-9_+]+)
RewriteRule ^/?index.php$ %1? [R,L]
RewriteRule ^/?([-a-zA-Z0-9_+]+)$ index.php?marker&id=$1 [L]
NetScaler solution
add responder action act_redirect redirect 'HTTP.REQ.URL.PATH.BEFORE_STR("index.php")+HTTP.REQ.URL.QUERY.VALUE("id")'
add responder policy pol_redirect '!HTTP.REQ.URL.QUERY.CONTAINS("marker")&& HTTP.REQ.URL.QUERY.VALUE("id").REGEX_MATCH(re/[-a-zA-Z0-9_+]+/) && HTTP.REQ.URL.PATH.CONTAINS("index.php")' act_redirect
bind responder global pol_redirect 100 END
add rewrite action act1 replace 'HTTP.REQ.URL.PATH.SUFFIX('/',0)' '"index.phpmarker&id="+HTTP.REQ.URL.PATH.SUFFIX('/',0)'
add rewrite policy pol1 '!HTTP.REQ.URL.QUERY.CONTAINS("marker")' act1
bind rewrite global pol1 100 END
<!--NeedCopy-->
Asegurarse de que se utiliza un servidor seguro para las páginas seleccionadas
Para asegurarse de que solo se utilizan servidores seguros para las páginas Web seleccionadas, puede utilizar el siguiente código mod_rewrite de Apache o las directivas de NetScaler Responder.
Solución mod_rewrite de Apache
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(page1|page2|page3|page4|page5)$ https://www.example.com/%1 [R,L]
<!--NeedCopy-->
Solución NetScaler que utiliza expresiones regulares
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.REGEX_MATCH(re/page[1-5]/)' res_redirect
bind responder global pol_redirect 100 END
<!--NeedCopy-->
Solución NetScaler que utiliza conjuntos de patrones
add patset pat1
bind patset pat1 page1
bind patset pat1 page2
bind patset pat1 page3
bind patset pat1 page4
bind patset pat1 page5
add responder action res_redirect redirect '"https://www.example.com"+HTTP.REQ.URL'
add responder policy pol_redirect '!CLIENT.TCP.DSTPORT.EQ(443)&&HTTP.REQ.URL.CONTAINS_ANY("pat1")' res_redirect
bind responder global pol_redirect 100 END
<!--NeedCopy-->
En este artículo
- Convertir variaciones de URL en URL canónicas
- Solución mod_rewrite de Apache para convertir una URL
- Solución NetScaler para convertir una URL
- Conversión de variaciones de nombres de host en nombres de host canónicos
- Solución mod_rewrite de Apache para aplicar un nombre de host concreto a sitios que se ejecutan en un puerto distinto del 80
- Solución mod_rewrite de Apache para aplicar un nombre de host concreto a sitios que se ejecutan en el puerto 80
- Solución de NetScaler para aplicar un nombre de host determinado a los sitios que se ejecutan en un puerto distinto del 80
- Solución de NetScaler para aplicar un nombre de host determinado a los sitios que se ejecutan en el puerto 80
- Mover la raíz de un documento
- Solución mod_rewrite de Apache para mover la raíz del documento
- Solución NetScaler para mover la raíz del documento
- Solución NetScaler para mover la raíz del documento y agregar información de ruta a la solicitud
- Trasladar directorios de inicio a un nuevo servidor web
- Solución mod_rewrite de Apache para redirigir a otro servidor web
- Solución NetScaler para redirigir a otro servidor web (método 1)
- Solución NetScaler para redirigir a otro servidor web (método 2)
- Trabajar con directorios de inicio estructurados
- Solución mod_rewrite de Apache para directorios de inicio estructurados
- Solución NetScaler para directorios principales estructurados
- Redirigir URL no válidas a otros servidores web
- Solución mod_rewrite de Apache para la redirección si una URL es incorrecta
- Solución NetScaler para la redirección si una URL es incorrecta (método 1)
- Solución NetScaler para la redirección si una URL es incorrecta (método 2)
- Reescritura de una URL en función del tiempo
- Solución mod_rewrite de Apache para reescribir una URL en función de la hora
- Solución de NetScaler para reescribir una URL en función de la hora
- Redirigir a un nuevo nombre de archivo (invisible para el usuario)
- Solución mod_rewrite de Apache para gestionar un cambio de nombre de archivo en una ubicación fija
- Solución NetScaler para gestionar un cambio de nombre de archivo en una ubicación fija
- Solución de NetScaler para gestionar un cambio de nombre de archivo independientemente del directorio base o de las cadenas de consulta de la URL
- Redirigir al nuevo nombre de archivo (URL visible por el usuario)
- Solución mod_rewrite de Apache para cambiar el nombre del archivo y la URL mostrada en el explorador
- Solución NetScaler para cambiar el nombre del archivo y la URL mostrada en el explorador
- Solución NetScaler para cambiar el nombre del archivo y la URL mostrada en el explorador independientemente del directorio base o de las cadenas de consulta de la URL
- Adaptar contenido dependiente del explorador
- Solución mod_rewrite de Apache para configuraciones específicas del explorador
- Bloqueo del acceso de robots
- Solución mod_rewrite de Apache para bloquear una ruta y un encabezado User-Agent
- Solución de NetScaler para bloquear una ruta y un encabezado de User-Agent
- Bloqueo del acceso a imágenes en línea
- Solución mod_rewrite Apache para bloquear el acceso a una imagen en línea
- Solución NetScaler para bloquear el acceso a una imagen en línea
- Creación de vínculos sin extensión
- Solución mod_rewrite de Apache para agregar una extensión.php a todas las solicitudes
- Directiva de NetScaler para agregar una extensión.php a todas las solicitudes
- Solución mod_rewrite de Apache para agregar extensiones.html o.php a las solicitudes
- Directiva de NetScaler para agregar extensiones.html o.php a las solicitudes
- Redirigir un URI de trabajo a un nuevo formato
- Solución mod_rewrite de Apache
- Asegurarse de que se utiliza un servidor seguro para las páginas seleccionadas
- Solución mod_rewrite de Apache
- Solución NetScaler que utiliza expresiones regulares
- Solución NetScaler que utiliza conjuntos de patrones