Programando para que no importe la URL
En ocasiones, programando, se nos presentan problemas porque la url fue escrita con o sin el www. en el codigo. Por ejemplo, escribiste http://www.rhosting.com.ar en vez de http://rhosting.com.ar o viceversa. Esto provoca errores de seguridad en AJAX como: “Error: uncaught exception: Permiso denegado para llamar el método XMLHttpRequest.open”, impidiendo su funcionamiento normal. En este tutorial te explicamos como podrás resolverlo usando .htaccess y php.
Para saber más...
Enviar valores mediante POST o GET con Ajax usando una sola funcion
http://www.forosdelweb.com/f77/problema-cargar-codigo-ajax-434874/
Mapeo URL en ASP
Programando URLs Amistosas
Para resolver problemas ocasionados por la URL es necesario que tu página sepa en forma dinámica mediante que url esta siendo llamada. Tomemos por ejemplo el caso del carro de compras AJAX de Rhosting.com.ar. Nuestro carro es llamado en todas las páginas mediante un codigo como este:
<script type="text/javascript">
window.onload=function(){
recibeid('http://www.rhosting.com.ar/carro.php','','','carro','','');
}
</script>
Donde window.onload funciona en forma similar a colocar onload="" en el tag body de una página. O sea, ejecuta una serie de funciones javascript al cargarse la página.
En este caso la funcion recibeid cuyo desarrollo hemos explicado en el tutorial Enviar valores mediante POST o GET con Ajax usando una sola funcion
Ahora bien. Si la página es escrita en forma estática, o sea, si le pasamos el valor http://www.rhosting.com.ar a la funcion recibeid, esto ocasionaria un problema si la persona que esta visitando la página, ya sea porque le queda comodo, por omision, o lo que fuere, escribio http://rhosting.com.ar
El problema que originaria es que la página no funcionaria adecuadamente o que mostraria una leyenda como "Esta pagina esta intentando el acceso a informacion fuera de su control. Esto presenta un riesgo de seguridad.¿Desea Continuar?" o, en ingles, “Error: uncaught exception: Permiso denegado para llamar el método XMLHttpRequest.open”
Este es un error muy comun que se origina por el hecho de que XMLHttpRequest no puede pedir datos de otro dominio, solo trabajar con el dominio local por razones de seguridad.
Bien, existen dos posibles soluciones para esto. Una es llamar al carro mediante referencia absoluta. o sea colocar recibeid('carro.php','','','carro','',''); y dejar que simplemente el navegador se encargue de llamarlo correctamente.
Aunque esto puede presentar problemas cuando estamos trabajando en directorios o subdirectorios, o creando urls con .htaccess. Ademas de obligarnos a tener que cambiar constantemente la URL.
Sin embargo, otra opcion, es, por ejemplo, colocar recibeid('http://<? echo $_SERVER['HTTP_HOST'];?>/carro.php','','','carro','',''); al llamar la url.
$_SERVER['HTTP_HOST'] es una variable de codigo PHP que básicamente nos trae todo lo que esta entre http:// y la siguiente barra invertida. En este caso www.rhosting.com.ar Esto permite que si lo que esta entre ambas cambia, la funcion php cambie lo que muestra, dinámicamente.
Ahora bien, y qué sucede si no trabajas con páginas .html? Como es de público conocimiento, para que el codigo php funcione en una página, es necesario que esta página sea .php
Bien, eso podrás resolverlo creando una URL amistosa mediante un .htaccess.
Es simple. Solo debes crear un archivo de texto. Puede ser creado con cualquier editor html, como dreamweaver o FrontPage, o incluso creado como se crea un txt en Mi PC o Mis Documentos.
Al crearlo, simplemente debes darle el nombre .htaccess sin ninguna extension.
Dentro de él deberas escribir unas lineas como las siguientes:
RewriteEngine on
Rewriterule ^mipagina.html$ mipagina.php
Rewriterule ^seccion/(.*)/(.*)/(.*)$ seccion.php?variable1=$1&variable2=$2&variable3=$3
Basicamente, lo que escribis son rewrite rules, o reglas de re escritura. ¿ De re escritura de que? De la url, por supuesto. Por ejemplo, esto:
Rewriterule ^mipagina.html$ mipagina.php
Quiere decir que cuando en tu navegador escribas http://www.tusitio.com/mipagina.html aparecerá como si estuvieras viendo esa página, pero en realidad estarás viendo http://www.tusitio.com/mipagina.php
Volviendo a la solucion del problema con AJAX, esto permite que guardes tus paginas con extension .php, ejecuten codigo php y sin embargo tus visitantes la sigan viendo como páginas .html.
Si te preocupa que sea dificil trabajar con páginas php, te comentamos que Dreamweaver permite ver ambos tipos de paginas, php y html como si fueran html. O sea, una página php puede ser trabajada como una página html, desde el punto de vista estético, si no necesitas trabajar con codigo.
Como ultimo comentario, ya para casos mas avanzados, la regla
Rewriterule ^seccion/(.*)/(.*)/(.*)$ seccion.php?variable1=$1&variable2=$2&variable3=$3
Te permite pasarle variables a la url. Por ejemplo, si tu url para que funcione necesita las variables 1, 2 y 3 como en el ejemplo, pero escribirla asi: http://www.tusitio.com/seccion.php?variable1=valor1&variable2=valor2&variable3=valor3 hace que los navegadores no indexen adecuadamente tus páginas, mediante esta regla de escritura tu URL lucirá de esta forma: http://www.tusitio.com/valor1/valor2/valor3
Ten presente que, la regla de reescritura solo reemplaza los (*) por lo que haya en el signo $ seguido de un número, que esta en el mismo orden en que aparece el (*)
Bien, esperemos que uses esta solucion y la disfrutes.
Enlaces relacionados
Tags relacionados

Sin conversaciones. Abri una conversacion sobre este tema!!
Aikido
Brazilian
Defensa Personal
Tai chi chuan
Valetodo
Ipod Iphone
Telefonos
Administracion
Empleo
Emprendedores
Gurues
Mercadeo
Motivacion
Temas Legales
Sony Vegas
Playstation
Trucos
PHP
Dreamweaver
Excel
Flash
Photoshop
PowerPoint
varios
Dietas
Enfermedades
Area de Usuarios
Bases de Datos
Buscadores
Compras
Correo Electronico
Evitando el Spam
Panel CPanel
Panel Plesk
Revendedores
Sobre mi dominio
Solucion de problemas
Subiendo mi sitio
Utilidades
Videos Rhosting
Terminos del Servicio - Politica de Privacidad - Ayuda a tus amigos, recomiendanos! - Contactanos
Todos los articulos de la seccion de Ayuda son Copyleft. Podes reproducirlos citando la fuente.
Producto Rhosting.com.ar- 1999 al 2008 - Resistencia - Chaco Las Malvinas son Argentinas