Puede usar la Include
directiva httpd.conf
para poder mantener las redirecciones en otro archivo. Pero no sería muy eficiente, ya que cada solicitud debería verificarse con muchas expresiones regulares. También sería necesario reiniciar el servidor después de cada cambio en el archivo.
Una mejor manera para tantos redireccionamientos sería utilizar la directiva de tipo RewriteMapdbm
para declarar un mapa desde los URI a los redireccionamientos. De esta manera, será eficiente, ya que las búsquedas de dbm son muy rápidas y, después de un cambio en el mapa, no necesitará reiniciar un servidor, ya que httpd
verifica el tiempo de modificación del archivo del mapa.
Las reglas de reescritura se verían así (probado en mi computadora Fedora 16):
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
Y el mapa dbm se crearía a partir del mapa de texto /etc/httpd/conf/redirects.txt
con este aspecto:
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
usando un comando
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
!=
y ahora""
he corregido mi ejemplo a una versión funcional y probada.?
en la URL), pero también es posible . Como es ahora, simplemente agregaría una cadena de consulta para redirigir, por ejemplohttp://yourserver.com/foo?q=bar
, redirigiría ahttp://serverfault.com/?q=bar
.RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
dio errorRewriteMap dbm type db is invalid
. Pero cuando lo uséRewriteMap redirects txt:/etc/httpd/conf/redirects.txt
funcionó. Todavía quiero ir de manera hash como explicaste en lugar de texto sin formato. Pero no pude encontrar mucho sobre el error dbm. Gracias por tu ayuda.Escribiría un script que genera un nuevo VHOST con solo los enlaces de la lista.
fuente