Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/06/2010, 00:13
Avatar de neodani
neodani
 
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema con webmodular

Buenas,

Resulta que estoy construyendo un diseño modular de la siguiente manera (acepto todo tipo de sugerencias!!!)

Tengo mi index.php donde cargo todos los módulos, cabecera, metas, pie de pagina, etc y el contenido.

La parte central de la pagina tiene un switch

Código PHP:
Ver original
  1. <?
  2. $id=$_GET['pagina'];
  3. switch ($id) {
  4.    case 'faq':
  5.        include("pages/ayuda/faq.php");
  6.        break;
  7.    case 'soporte':
  8.        include("pages/ayuda/soporte.php");
  9.        break;
  10.    case 'servicios':
  11.        include("pages/servicios.php");
  12.        break;
  13.     case 'directorio':
  14.         $apartado=$_GET['apartado'];
  15.         switch ($apartado) {
  16.             case 'futbol':
  17.                 include("pages/directorio/futbol.php");
  18.                 break;
  19.             case 'tenis':
  20.                 include("pages/directorio/tenis.php");
  21.                 break;
  22.              default:
  23.                 include("pages/404.php");
  24.         };
  25.         break;
  26.    default:
  27.        include("pages/404.php");
  28. }
  29. ?>

Esto funcionaria tal que así

miweb.com/index.php/?pagina=faq

o si entran en alguna subpagina
miweb.com/index.php/?pagina=directorio&apartado=tenis

Todo esto con un .htaccess como el que sigue, para cada sección tengo que crear una linea como la siguiente

Código Apache:
Ver original
  1. RewriteRule ^equipo_me/$ /index.php?pagina=equipo_me [L]
  2. RewriteRule ^nosotros/$ /index.php?pagina=nosotros [L]
  3. RewriteRule ^proximos-partidos/$ /index.php?pagina=proximos [L]
  4. #Rewriterule ^(.+)/(.+)/ index.php?pagina=$1&apartado=$2 [L]                                                           # SE LO TRAGA TODO
  5.  
  6.  
  7. RewriteRule ^faq/$ /index.php?pagina=faq [L]
  8. RewriteRule ^soporte/$ /index.php?pagina=soporte [L]
  9. #RewriteRule ^(.+)/$ /index.php?pagina=$1 [L]                                                                                                                          # SE LO TRAGA TODO

Mi problema es que si ponen una dirección que no existe, no redirecciona hacia una pagina 404, sino que muestra la página que esta definida en el switch como default, y esto no debería ser así... ya que si la dirección no existe debería dar un error 404 not found.

Esto pasa siempre y cuando quiero ahorrar lineas y pongo lineas como las siguientes
Rewriterule ^(.+)/(.+)/ index.php?pagina=$1&apartado=$2
RewriteRule ^(.+)/$ /index.php?pagina=$1

¿Cómo podría solucionarlo? La manera de implementar la web modular es correcta no? he leido varios ejemplos por la red, zonaphp, forosdelweb, etc...

Muchas gracias de antemano!