Comunidad de diseño web y desarrollo en internet online

problema con archivo htaccess

Citar            
MensajeEscrito el 19 Dic 2011 11:50 pm
Hola foro, buenas tardes, tengo un problema con la configuracion del archivo .htaccess y quería ver si alguien me pudiera guiar o sugerir alguna solución

estoy desarrollando un sitio el cual hace referencia a distintos enlaces del formato sitio.com/archivo.php?var=1&var2=2... para evitar esto estoy utilizando un archivo htaccess para poder hacer urls limpias y que queden del formato sitio.com/opcion/opcion/...

esto, como sabrán, se hace activando la directiva RewriteEngine.... hasta aquí todo perfecto, el problema viene cuando quiero hacer referencia a los archivos dependiendentes del sitio (imagenes, hojas de estilo, js, etc...) pues no me está respetando la ruta que le estoy dando cuando llamo a estos archivos, leí que para resolver este problema al .htaccess hay que agregar lo siguiente:
Options +FollowSymLinks

ya lo hice, pero el problema no está solucionado, es decir, mi sistema de archivos está algo así, por ejemplo para mis hojas de estilo las llamo de la siguiente manera

Código HTML :

<link rel="stylesheet" href="css/estilos_body.css" type="text/css" />


al modificar las urls para que me las muestre como algo asi:

sitio.com/seccion/

me muestra un error diciendo que la ruta: sitio.com/seccion/css/estilos_body.css no éxiste (obvio no existe porque lo que deberia buscar es sitio.com/css/estilos_body.css) lo de menos es cambiar la ruta a algo como

Código HTML :

<link rel="stylesheet" href="../css/estilos_body.css" type="text/css" />


pero tengo secciones donde mi ruta debe ser sitio.com/seccion/subseccion/ y entonces me vuelve a marcar error.

espero no haberlos confundido y hayan entendido lo que quise decir, de antemano agradesco sus respuestas

saludos cordiales :D

Por sirhcle

94 de clabLevel

1 tutorial

Genero:Masculino  

desarrollador web

firefox
Citar            
MensajeEscrito el 20 Dic 2011 12:37 pm
Lo que ocurre, como te habrás dado cuenta, es que el navegador usa la ruta virtual porque no tiene forma de saber que se trata de una ruta virtual.

La solución pasaría por en vez de usar rutas relativas en tu HTML, poner rutas absolutas, o sea en vez de:

Código :

css/estilos_body.css

Poner

Código :

http://tusitio.com/css/estilos_body.css

Y así con todas las referencias a archivos en el servidor (por ejemplo, con el tag <img> también tienes ese problema).
Ahora bien, es un bardo cambiar todas esas referencias a mano, especialmente si vas a mover de lugar un archivo o incluso cambiar de servidor.
Aquí es donde PHP te puede ayudar.
Al inicio del script y es mejor que lo hagas en una biblioteca que uses siempre, así lo tendrás siempre disponible, pon este código:

Código PHP :

$base = dirname($_SERVER["SCRIPT_NAME"]);
$base = str_replace('\\','/',$base);
if ($base == '/') { $base = NULL; }
define('BASE_URL', 'http://'.$_SERVER['HTTP_HOST'].$base.'/');

En la constante BASE_URL tendrás la ruta real del servidor, solo tienes que anteponerla a cualquier referencia a archivos reales del servidor. En el caso anterior sería:

Código PHP :

<link rel="stylesheet" href="<?php echo BASE_URL; ?>css/estilos_body.css" type="text/css" />


Te aviso que también tendrás el mismo problema en tus archivos .css cuando quieras usar imágenes de fondo o cargar tipografías.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 21 Dic 2011 06:34 pm
en html hay un tag poco usado es el de <BASE/>
solo agrega en el header

<base href="http://tusitio.com/" />

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Dic 2011 08:56 pm
El problema de esa solución es que JavaScript no lo tiene en cuenta y que debes cambiar ese valor cuando subes cosas al servidor remoto o cambias de dominio.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 22 Dic 2011 02:30 pm
Hola!
Tambien, siempre puedes hacer excepciones en el htaccess de la siguiente manera:

Código :

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Por Xer0s

Claber

276 de clabLevel

3 tutoriales

 

Colombia

chrome
Citar            
MensajeEscrito el 22 Dic 2011 05:08 pm
O también puedes hacer que el servidor no continúe procesando la petición si el recurso (directorio y/o archivo) solicitado existe realmente en el servidor:

Código :

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule bla... bla... bla...

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 10 Ene 2012 06:06 pm
muchas gracias a todos por sus respuestas, estoy en el proceso de checar la mejor opción, hago pruebas y les aviso que tal me fue :lol:

Por sirhcle

94 de clabLevel

1 tutorial

Genero:Masculino  

desarrollador web

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.