Con este script en perl, que debes salvar en un archivo de texto y llamarlo, por ejemplo, frames.cgi:
Código:
#!/usr/bin/perl
# Pon aqui la URL, incluyendo http://, de tu
# jonjunto de marcos (frameset):
my $FramesetURL = 'http://www.tusitio.com/index.html';
# pon aqui el nombre del archivo que sera
# sustituido por los diferentes archivos
# en el frameset:
my $ReplaceThisFile = 'home.html';
# No toques esto:
use strict;
use LWP::Simple;
my $Page = get $FramesetURL;
if($ENV{QUERY_STRING})
{
$ENV{QUERY_STRING} =~ s!%([a-fA-F0-9][a-fA-F0-9])!pack("C",hex($1))!eg;
$ENV{QUERY_STRING} =~ s!^https?://(www\.)?!!i;
$FramesetURL =~ s!^https?://(www\.)?!!i;
$FramesetURL =~ s!/[^/]*$!/!;
while($ENV{QUERY_STRING} =~ m!^([^/]{0,}/)!)
{
my $one = $1;
last unless $FramesetURL =~ m!^([^/]{0,}/)!;
last if lc($1) ne lc($one);
$ENV{QUERY_STRING} =~ s!^$one!!i;
$FramesetURL =~ s!^$one!!i;
}
$ReplaceThisFile = "$FramesetURL$ReplaceThisFile" if $FramesetURL =~ /\w/;
$Page =~ s/$ReplaceThisFile/$ENV{QUERY_STRING}/sig;
}
print "Content-Type: text/html\n\n$Page";
Súbelo a tu servidor y dale permisos 755.
Imaginemos que tienes un frameset, index.html, que incluye dos archivos, menu.html y home.html, algo así:
Código:
<frameset cols="175,*">
<frame src="http://www.tusitio.com/menu.html" name="menu">
<frame src="http://www.tusitio.com/home.html" name="main">
</frameset>
Importante: debes escribir la ruta completa de menu.html y home.html, con http:// tal y como lo he puesto yo.
Se supone que cuando desde un buscador se llame a un archivo cualquiera, por ejemplo, foro.html, se debe abrir el frameset index.html incluyendo menu.html y sustituyendo home.html por foro.html, ¿no? Pués para eso debes incluir este código en la cabecera (head) de foro.html (y en todos los que quieras que se abran sobre home.html):
sigue...