Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2009, 14:26
neobcn
 
Fecha de Ingreso: agosto-2009
Ubicación: $this->home = "BCN";
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
Dudas con la estructuración de un website

Saludos amigos de foros del web,

Llevo mucho tiempo peleándome con un tema. Me gustaría poder hacer mis websites con php y mysql.
Con php y mysql me llego a defender decentemente, pero con el tema de los archivos .htaccess, ahí empiezan mis dolores de cabeza.
Intentaré explicarme:

Inicio mis websites con el archivo index.php

En este archivo es donde implemento la cabecera y el menú principal del website.

Para no tener que repetir la cabecera y el menú con sus correspondientes enlaces al resto de archivos del website, utilizo una técnica que encontré trás muchas busquedas en la red, utilizando un archivo .htaccess con las instrucciones RewriteRule

Ejemplo:

Código PHP:
<!DOCTYPE">
<head>
<title>Mi website</title>
</head>
<body>
<table class="website" cellpadding="0" cellspacing="0" border="0" width="100%" align="center">
    <tr>
        <td>
            <!-- CABECERA -->
            <img src="img/logo.png" />
        </td>
    </tr>
    <tr>
        <td>
            <!-- MENÚ PRINCIPAL -->
            Aquí monto el menú a base de enlaces con el 
nombre
 del archivo sin su extensión .php por ejemplo:
            inicio, archivo_1, archivo_2, archivo_3
        </td>
    </tr>
    <tr>
        <td>
            <!-- VISOR DE CONTENIDOS -->
            Aquí es donde se van mostrando los contenidos de los archivos
 de forma dinámica según el enlace que se pulsa, 
mediante la sentencia include dentro del bloque switch($_GET["go"])
            <?php
                
switch($_GET["go"])
                {
                    default:
                    case 
0:
                        include 
"inicio.php";
                        break;
                    case 
1:
                        include 
"archivo_1.php";
                        break;
                    case 
2:
                        include 
"archivo_2.php";
                        break;
                    case 
3:
                        include 
"archivo_3.php";
                        break;
                }
            
?>
        </td>
    </tr>
    <tr>
        <td>
            <!-- PIE -->
            &copy;copyright 2009 Yo mismo
        </td>
    </tr>
</table>
</body>
</html>
Por otro lado tengo el archivo .htaccess con el siguiente código:

RewriteEngine On
RewriteRule ^inicio index.php?go=0 [L]
RewriteRule ^archivo_1 index.php?go=1 [L]
RewriteRule ^archivo_2 index.php?go=2 [L]
RewriteRule ^archivo_3 index.php?go=3 [L]

Con este código, todo funciona como se espera, al pulsar en cada uno de los enlaces, se muestra el contenido del correspondiente archivo en la parte central de la tabla html del archivo index.php

El problema aparece, cuando el enlace debe de pasar algún tipo de parámetro, como por ejemplo:

Deseo abrir el archivo_1.php y enviarle un parámetro para que su contenido sea distinto a si lo hago desde el menú principal. Es decir, en el menú principal abro el archivo "archivo_1.php" sin más, pero en ese archivo, tengo una tabla con una serie de registros que contienen enlaces para examinar cada uno de ellos de una forma más detallada.

Ejemplo del contenido del archivo "archivo_1.php"

ID NOMBRE TELEFONO
1 Pepe 111 111 111
2 Luis 222 222 222
3 Marta 333 333 333

Cada uno de estos registros, contiene un enlace que envia a este mismo archivo un parámetro "en este caso el id" para insertar en un formulario todos los datos del registro ya que en la tabla no los muestro todos.

Para ello, añado al archivo .htaccess una nueva línea debajo de la de:

RewriteRule ^archivo_1 index.php?go=1 [L]

Para poder capturar el parámetro enviado:

RewriteRule ^archivo_1/(.+) index.php?go=1&p=$1 [L]

Hasta aquí todo bien

cuando me posiciono sobre el enlace, la url que se muestra es:

localhost/www/miWebsite/archivo_1/1 o el Id sobre el que este posicionado

y el archivo "archivo_1.php" se abre de nuevo esta vez mostrando el contenido correspondiente al id del enlace.

Pero, si hago click en un nuevo enlace de ese mismo archivo, aquí es donde aparece el problema,

el resultado es una url así:

localhost/www/miWebsite/archivo_1/archivo_1/1

Fijaos en que me acumula un nuevo archivo_1 sobre el url anterior y así sucesivamente por cada nuevo click de enlace.

No sé si he conseguido explicarme con claridad, pues incluso a mí me parece de cine este efecto, sin mencionar que además, omite totalmente los estilos css y me destroza el formato del web.

Todo esto, por querer mostrar todo el contenido con una cabecera y un menú común a todos los archivos sin tener que hacer una cabecera para cada uno de ellos.

Si sabéis como solucionar el problema del .htaccess os lo agradecería mucho, así como una alternativa menos compleja, pues realmente he sufrido ya muchos dolores de cabeza con el dichoso .htaccess.

Gracias y hasta pronto.