Organización páginas y error 404 en sitio web PHP

  • Autor Autor nentab
  • Fecha de inicio Fecha de inicio
N

nentab

Gamma
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
¡Hola a todos!

Estoy tratando de hacer una pequeña web, pero quería tener claro cómo organizar las páginas y la página 404. Espero que podáis ayudarme. Mi idea es la de tener un index.php que tenga el header, el footer, y en medio de éstos, lo siguiente:

PHP:
<?php
    switch($_GET['op']) {
        case "inicio":
            include("inicio.php");
            break;
        case "biografia":
            include("biografia.php");
            break;
        default:
            include("404.php");
            break;
    }
?>

Luego los archivos inicio.php, contacto.php y 404.php llevarían solo el contenido de la página.
Y en el .htaccess tengo el siguiente código para que muestre el contenido de inicio.php al entrar al index.php, y para tener las URLs "amigables":
Insertar CODE, HTML o PHP:
RewriteEngine on
RewriteRule ^([^./]+)$ index.php?op=$1 [L]

DirectoryIndex index.php?op=inicio

De esta manera, si se entra a alguna de las siguientes direcciones, se ve el contenido de éstas (sin header y footer):
dominio.com/inicio.php
dominio.com/contacto.php
dominio.com/404.php


Pues bien, yo quiero que si se entra a alguna de estas últimas direcciones salga también el contenido del 404.php (index.php?op=404).

Y también quería que si se entra a cualquier dirección como, por ejemplo, cualquiera de las siguientes, muestre también el contenido del 404.php (index.php?op=404):
dominio.com/cualquiercosa.php
dominio.com/cualquiercosa.loquesea
dominio.com/cualquiercosa
dominio.com/otracosa


Espero haberme explicado bien, y ojalá alguien pueda ayudarme. ¡Saludos y gracias de antemano!
 
Última edición:
yo haría algo así

PHP:
RewriteRule ^([^./]+).php$ index.php?op=404 [L]

o nose, sería usar rewriteCon
Si pongo eso, al ir al /index.php ya sale el contenido del 404.php (index.php?op=404).
 
Yo te recomendaría que para hacer todo más fácil desde tu .htaccess pongas el siguiente código:

Insertar CODE, HTML o PHP:
ErrorDocument 404 /404.php

Así cualquier error 404 será redirigido automáticamente al documento 404.php

Y en el caso de que no quieras que accedan directamente a tus archivos, coloca un código como este en tus phps:
Insertar CODE, HTML o PHP:
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'nombredearchivo.php' == basename($_SERVER['SCRIPT_FILENAME']))
	die ('Please do not load this page directly. Thanks!');

Saludos y espero te sirva
 
Yo te recomendaría que para hacer todo más fácil desde tu .htaccess pongas el siguiente código:

Insertar CODE, HTML o PHP:
ErrorDocument 404 /404.php

Así cualquier error 404 será redirigido automáticamente al documento 404.php

Y en el caso de que no quieras que accedan directamente a tus archivos, coloca un código como este en tus phps:
Insertar CODE, HTML o PHP:
if (!empty($_SERVER['SCRIPT_FILENAME']) && 'nombredearchivo.php' == basename($_SERVER['SCRIPT_FILENAME']))
    die ('Please do not load this page directly. Thanks!');

Saludos y espero te sirva

Si pongo el código del ErrorDocument, entonces lo que hace es redirigir... Es decir, yo entro a cualquiera de estas direcciones:

dominio.com/cualquiercosa.php
dominio.com/cualquiercosa.loquesea
dominio.com/cualquiercosa
dominio.com/otracosa

Y me cambia la URL a dominio.com/404.php.

¿Existe la posibilidad de que, manteniendo la URL intacta, muestre el contenido del archivo 404.php? Como hace Wordpress, pongo un ejemplo de mi blog (sitio en construcción): Yo entro a alguna de estas URLs, y sin cambiar la URL, me muestra el error 404:

http://nentab.com/blog/cualquiercosa.php
http://nentab.com/blog/cualquiercosa.loquesea
http://nentab.com/blog/cualquiercosa
 
veo que ya lo solucionaste, al ingresar a esas url te muestra el contenido de 404 sin cambiar la url
 
veo que ya lo solucionaste, al ingresar a esas url te muestra el contenido de 404 sin cambiar la url
No lo solucioné. Expliqué en mi anterior mensaje que eso es lo que hace Wordpress. Y es lo que yo quiero conseguir en el resto de la web (lo que no es /blog/).
 
Nadie...? :/
 
Atrás
Arriba