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']);
Código PHP:
$_GET['q'])
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:
Gracias por adelantado RewriteEngine On RewriteBase /script/pruebas RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/?$ index.php?q=$1 [L,QSA]