Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/02/2008, 17:02
VicHaunter
 
Fecha de Ingreso: junio-2002
Mensajes: 57
Antigüedad: 21 años, 10 meses
Puntos: 0
Problema con header(Location:)

Buenas, desde hace unos días le estoy dando vueltas a un script de redirecciones que estoy intentando hacer.

Trata de crear friendly urls, es decir, de las bonitas para los buscadores.

Consta de dos partes, una en .htaccess que está funcionando, y la redirección para cuando la url no está bien escrita.

El problema lo tengo en esta última y es cosa del php, he intentado varias cosas pero sin resultado, y lo último que estoy intentando es que mire si hay caracteres que quiero sustituir, sustituirlos y hacer la redirección si los hay, y sino pues no redireccionar.

El código es el siguiente:

Código PHP:
function esta_limpio$haystack$needle ) {
     
$count 0;
     foreach (
$needle as $substring) {
          
$count += substr_count$haystack$substring);
     }
     return 
$count;
}

function 
sentence_cap($impexp$sentence_split) {
    
$textbad=explode($impexp$sentence_split);
    
$newtext = array();
    foreach (
$textbad as $sentence) {
        
$sentencegood=ucfirst($sentence);
        
$newtext[] = $sentencegood;
    }
    
$textgood implode($impexp$newtext);
    return 
$textgood;
}

function 
redireccionar_limpio($page){

$capitalizada sentence_cap("t/",$page);
$capitalizada sentence_cap(":",$capitalizada);
$capitalizada sentence_cap("/",$capitalizada);

$limpio = array(
"%E1" => "a",
"%C1" => "A",
"%E9" => "e",
"%C9" => "E",
"%ED" => "i",
"%CD" => "I",
"%F3" => "o",
"%D3" => "O",
"%FA" => "u",
"%DA" => "U",
"%C3%B1" => "n",
"%F1" => "n",
"%D1" => "N",
"/" => "-",
"%20" => "_",
" " => "_"
);

$sinespecialchars strtr($capitalizada$limpio);
$limpiar = array("%E1","%C1","%E9","%C9","%ED","%CD","%F3","%D3","%FA","%DA","%C3%B1","%F1","%D1","%20"," ","/");
$repetir esta_limpio($page$limpiar);    

          if(
$repetir '0'){
            
$destino "Location: ".$sinespecialchars;
            
header($destino);
            }
}


redireccionar_limpio($_GET['q']); 
El
Código PHP:
$_GET['q']) 
sería en este caso la parte variable de la url, es decir, todo lo que va detras de www.midominio.com/variable/de/la/url la cual quiero formatear de la siguiente forma:

Que capitalize la primera letra, y si hay : a mitad tambien, es decir
www.midominio.com/Variable:Deurl

Que si hay símbolos que no sean [a-Z], :, =, ? o &, los reemplace por sus homónimos (si son acentos, por el carácter sin el acento y si son otros por _)

El problema es que no he conseguido hacer que compruebe que son letras normales ya que en las url los carácteres se interpretan como %20 por ejemplo para el espacio.

Si alguien tiene una idea de como podría hacer que sea tan benévolo de decírmelo ya que lo único que consigo de momento es bucles infinitos.

Por cierto, mi htaccess es el siguiente:
Código:
RewriteEngine On
RewriteBase /script/pruebas
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?q=$1 [L,QSA]
Gracias por adelantado