[l-linux] [p] Apache - usando extensiones diferentes a html

Jose Rey jrey at linuxsis.net
Wed Dec 17 20:37:05 CST 2003


Jean Pierre Rupp wrote:
 > Lo traté de correr y se me quedo en el sitio, no hace nada y pareciera
 > estar corriendo.

Si hay muchos archivos puede ser que find esté haciendo su trabajo, pero 
  si son muchisimos, tambien te puedes encontrar con una limitación de 
la cantidad de argumentos que puedas pasar a un programa, además si find 
no encuentra ningún archivo, se queda esperando del stdin.

Pero ya que estamos emocionados escribiendo scripts, pueden intentar:

$ perl -i -pe 's{(\s+href=")([^"]+?)\.asp"}{$1$2.html"}gi;
    if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename $ARGV,$n }' \
    `find . -name "*.asp"`

Este se cuida un poco más y solo substituye los HREF, sin embargo 
también substituye cualquier enlace externo, que probablemente no 
queremos que se rompa, para ello pueden probar evitando los URLs absolutos:

$ perl -i -pe 's{(\s+href=")(?!http://)([^"]+?)\.asp"}{$1$2.html"}gi;
    if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename $ARGV,$n }' \
    `find . -name "*.asp"`

man perlre
:-)

Saludos
    Jose Luis Rey

 >
 > El mié, 17-12-2003 a las 14:42, Ernesto Hernandez-Novich escribió:
 >
 >>On Wed, 17 Dec 2003, Alvaro Jesus Hernandez Arteaga wrote:
 >>
 >>>El Mié 17 Dic 2003 11:02, Jose Luis Bazo escribió:
 >>>
 >>>>quiero que el apache tome un *.asp como si fuese un *.html
 >>>>y no me acuerdo en que parte del httpd.conf le agrego esa extencion 
para q
 >>>>la lea como si fuese un html comun y silvestre...
 >>>>un helping plis!!!!
 >>>
 >>>podrias intentar hacer un script para renombrar todos esos archivos,
 >>>posteriormente utilizando awk/sed hacer una poderosa línea de shell 
para
 >>>buscar dentro de los archivos el patron ".asp" y cambiarlo por ".html"
 >>>
 >>>bien es cierto que puedes hacer un cambio en el archivo httpd.conf 
(o como lo
 >>>llame la distribucion que uses) pero no serí ni elegante ni lo correcto
 >>>
 >>>“There is more Unix-nature in one line of shell script than there 
is in ten
 >>>thousand lines of C.”
 >>>Master Foo
 >>
 >>There is more Unix-nature in one line of Perl than there is in
 >>ten thousand lines of whatever-other-puny-language :-)
 >>
 >>$ perl -i -pe 's/\.asp"/\.html"/gi;
 >>               if (eof) { ($n = $ARGV) =~ s/asp$/html/; rename 
$ARGV,$n }'
 >>	       `find . -name *.asp`
 >>
 >>Asumiendo que los href terminan en " como lo indica el standard W3C para
 >>HTML. La expresión regular puede sofisticarse en caso de ser necesario,
 >>eso es lo de menos...
 >>
 >>Quiero hacer especial énfasis en el idioma
 >>
 >>($x = $y) =~ s/.../.../
 >>
 >>equivalente a
 >>
 >>$x = $y
 >>$x =~ s/.../.../
 >>
 >>pero en una sola línea.
 >>
 >>Así mismo, el 'eof' permite verificar cada una de las terminaciones 
internas
 >>del ciclo implícito que se construye para procesar cada archivo (man 
perlrun).
 >>
 >>De modo que en una sola línea, editar y renombrar un número arbitrario
 >>de archivos identificados por sus nombres absolutos. Por cierto, el uso
 >>de find puede ser sustituido si se usa el módulo File::Find de Perl,
 >>pero eso implica editar un archivo para hacer el script, hacer unas
 >>subrutinas y eso tarda mucho (y menos mal que no es orientado a objetos
 >>para algo tan simple ;-)


------------------------------------------------------------------------
Enviar e-mail a <majordomo at pm.org> colocando en el cuerpo:
"UNSUBSCRIBE caracas-pm-list" para desuscribirse.
"INFO caracas-pm-list" para conocer las reglas de etiqueta.
------------------------------------------------------------------------



More information about the caracas-pm mailing list