Foros del Web » Programando para Internet » PHP »

Mejorar web modular

Estas en el tema de Mejorar web modular en el foro de PHP en Foros del Web. Buenas, Me descargué el ejemplo de zonaPHP http://www.zonaphp.com/creando-webs-modulares/6/ Y lo estoy adaptando, pero me encuentro con un problema no consigo que si no existe el ...

  #1 (permalink)  
Antiguo 18/09/2010, 05:11
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Mejorar web modular

Buenas,

Me descargué el ejemplo de zonaPHP
http://www.zonaphp.com/creando-webs-modulares/6/

Y lo estoy adaptando, pero me encuentro con un problema no consigo que si no existe el modulo este redirija hacia la página de error 404, me redirige hacia una página 404 que yo he creado pero entiendo que esto el navegador lo interpreta como un código 200, porque existe...

Yo quiero que vaya al 404 de verdad xD, no se si me entendéis...

Y no sé si donde lo aplico es en el mejor lugar, linea 20

Podéis ver el funcionamiento desde aquí
http://www.webmodular.neodani.com

Este el código utilizado

Código PHP:
Ver original
  1. <?php
  2. //error_reporting(E_ALL);
  3. // Primero incluimos el archivo de configuración
  4. include('conf.php');
  5.  
  6. /** Verificamos que se haya escogido un modulo, sino
  7. * tomamos el valor por defecto de la configuración.
  8. */
  9. if (!empty($_GET['pagina']))
  10.     $modulo = $_GET['pagina'];
  11. else
  12.     $modulo = MODULO_DEFECTO;
  13.  
  14. /** También debemos verificar que el valor que nos
  15. * pasaron, corresponde a un modulo que existe, caso
  16. * contrario, cargamos el modulo por defecto
  17. */
  18. if (empty($conf[$modulo])){
  19.     $modulo = MODULO_DEFECTO;
  20.     header ("Location: ./modulos/404.php");
  21.     exit;
  22. }
  23.  
  24. /** Ahora determinamos que archivo de Layout tendrá
  25. * este módulo, si no tiene ninguno asignado, utilizamos
  26. * el que viene por defecto
  27. */
  28. if (empty($conf[$modulo]['layout'])){
  29.         $conf[$modulo]['layout'] = LAYOUT_DEFECTO;
  30. }      
  31. /** Aqui podemos colocar todos los comandos necesarios para
  32. * realizar las tareas que se deben repetir en cada recarga
  33. * del index.php - En el ejemplo, conexión a la base de datos.
  34. *
  35. * include('clases/class.DB.php');
  36. * $db = new DB();
  37. * $db->conectar();
  38. */
  39.  
  40. /** Finalmente, cargamos el archivo de Layout que a su vez, se
  41. * encargará de incluir al módulo propiamente dicho. si el archivo
  42. * no existiera, cargamos directamente el módulo. También es un
  43. * buen lugar para incluir Headers y Footers comunes.
  44. */
  45. $path_layout = LAYOUT_PATH.'/'.$conf[$modulo]['layout'];
  46. $path_modulo = MODULO_PATH.'/'.$conf[$modulo]['archivo'];
  47.  
  48. if (file_exists($path_layout))
  49.     include( $path_layout );
  50. else
  51.     if (file_exists( $path_modulo ))
  52.         include( $path_modulo );
  53.     else
  54.         die('Error al cargar el módulo <b>'.$modulo.'</b>. No existe el archivo <b>'.$conf[$modulo]['archivo'].'</b>');
  55. ?>

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 18/09/2010, 07:44
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Mejorar web modular

mira este link te puede ayudar

LINK

Saludos.
  #3 (permalink)  
Antiguo 18/09/2010, 10:46
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por McBlink Ver Mensaje
mira este link te puede ayudar

LINK

Saludos.
Gracias por el link, lo he estado mirando y creo que lo he medio conseguido

Lo he modificado aquí

if (empty($conf[$modulo])){
$modulo = MODULO_DEFECTO;
header("HTTP/1.0 404 Not Found");
header("Status: 404 Not Found");
echo "Pagina que buscas no existe";
exit;
}


El problema es la home ahora no la veo, me redirige al error 404 xDD

http://www.webmodular.neodani.com/

Para verla tengo que poner
http://www.webmodular.neodani.com/?pagina=home
o
http://www.webmodular.neodani.com/home

No hay alguna forma para cargar directamente esa url cuando accedo al dominio principal, a la raiz /?

Muchas gracias de antemano
  #4 (permalink)  
Antiguo 18/09/2010, 12:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mejorar web modular

eso último debes programarlo tu, que por defecto cargue cierto modulo si no se especifica...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 18/09/2010, 12:50
 
Fecha de Ingreso: junio-2010
Mensajes: 24
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Mejorar web modular

Ese código es vulnerable a RFI si en la configuración de PHP está activada la directiva allow_url_fopen, así que ve con cuidado.

EDITO: Vale no me hagas caso, no había visto dos líneas de código, jajajaja. Esta bien, no es vulnerable.
  #6 (permalink)  
Antiguo 18/09/2010, 13:19
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por pateketrueke Ver Mensaje
eso último debes programarlo tu, que por defecto cargue cierto modulo si no se especifica...
El problema que tengo es debido a las url amigables.
Para mostrar la home nada mas entrar sin que suponga un error en la configuración de los módulos lo he solucionado así, en mi .htaccess

# Mostrar la pagina de inicio
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^$ index.php?pagina=home [L]


Ya qué la parte que se encargaba era esta

Código PHP:
Ver original
  1. /** Verificamos que se haya escogido un modulo, sino
  2. * tomamos el valor por defecto de la configuración.
  3. */
  4. if (!empty($_GET['pagina']))
  5.     $modulo = $_GET['pagina'];
  6. else
  7.     $modulo = MODULO_DEFECTO;

Como tengo el mod_rewrite, todo lo que escriban en la url es del tipo pagina=xxxxx y por tanto siempre existirá internamente la variable "pagina"... no lo podía retocar desde ahí..

Eso sí, he dejado la siguiente parte así, ya que si no existe el modulo es cuando redirijo hacia la página 404

Código PHP:
Ver original
  1. /** También debemos verificar que el valor que nos
  2. * pasaron, corresponde a un modulo que existe, caso
  3. * contrario, cargamos el modulo por defecto
  4. */
  5. if (empty($conf[$modulo])){
  6.     $modulo = MODULO_DEFECTO;
  7.     header("HTTP/1.0 404 Not Found");
  8.     header("Status: 404 Not Found");
  9.     echo "Pagina que buscas no existe";
  10.     exit;
  11. }

http://www.webmodular.neodani.com/

Ahora está mejor, no? :D ¿alguna sugerencia más?

Qué os parece esta que aparece en la propia pagina de zonaphp?

"Recomendable sería que tanto los directorios de Layouts, Includes y Modulos, no estén disponibles en el mismo nivel que el Directorio DocumentRoot del WebServer, ya que de esa manera, por quien conozca el árbol de directorios, podría ejecutar los archivos llamándolos directamente. Para evitar esto, podemos tanto mover los directorios un nivel hacia arriba y modificar el archivo de configuración para que encuentre estos directorios ( y como vemos, no tendriamos que tocar nada en el código de la aplicación ) o bien utilizar algún método para proteger esos directorios por contraseña, como puede ser un archivo .htaccess de Apache."

Muchas gracias de antemano
  #7 (permalink)  
Antiguo 18/09/2010, 14:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Yo tengo una aplicación, mas o menos parecida al ejemplo que describís, que esta en la web hace varios años y nunca tuve ningun problema, en el index esta parte de codigo hace que si la variable 'modulo' esta vacia, se redirige al home (pagina principal) y si ingresan un modulo que no existe, va al modulo error.
Cada modulo tiene que estar presente en el array, ademas te cuento que uso url amigables y no hay problema.
Código PHP:
Ver original
  1. $modulo=!empty($_GET['modulo']) ? $_GET['modulo'] : 'home';
  2. $module=htmlentities($modulo);
  3. $module=strip_tags($module);
  4. $module=(string)$module;
  5.  
  6. $chequeodemodulos=array('home', 'ubicacion', 'historia', 'editorial', 'foro',  'fotos', 'contacto');
  7. if(!in_array($module, $chequeodemodulos)){
  8.     $module="error";
  9. }
  #8 (permalink)  
Antiguo 18/09/2010, 17:29
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
Yo tengo una aplicación, mas o menos parecida al ejemplo que describís, que esta en la web hace varios años y nunca tuve ningun problema, en el index esta parte de codigo hace que si la variable 'modulo' esta vacia, se redirige al home (pagina principal) y si ingresan un modulo que no existe, va al modulo error.
Cada modulo tiene que estar presente en el array, ademas te cuento que uso url amigables y no hay problema.
Código PHP:
Ver original
  1. $modulo=!empty($_GET['modulo']) ? $_GET['modulo'] : 'home';
  2. $module=htmlentities($modulo);
  3. $module=strip_tags($module);
  4. $module=(string)$module;
  5.  
  6. $chequeodemodulos=array('home', 'ubicacion', 'historia', 'editorial', 'foro',  'fotos', 'contacto');
  7. if(!in_array($module, $chequeodemodulos)){
  8.     $module="error";
  9. }
Pero si usas url amigables, imagino que tendrán muy posiblemente esta forma
tuweb.com/?modulo=home
tuweb.com/?modulo=ubicacion
etc...

Si te fijas nunca estará vacía la variable modulo, porque siempre llamarás a la web pasándole un parámetro, al menos así lo veo yo...
tuweb.com/historia
tuweb.com/ubicacion

¿Qué opináis del párrafo que puse arriba?

"Recomendable sería que tanto los directorios de Layouts, Includes y Modulos, no estén disponibles en el mismo nivel que el Directorio DocumentRoot del WebServer, ya que de esa manera, por quien conozca el árbol de directorios, podría ejecutar los archivos llamándolos directamente. Para evitar esto, podemos tanto mover los directorios un nivel hacia arriba y modificar el archivo de configuración para que encuentre estos directorios ( y como vemos, no tendriamos que tocar nada en el código de la aplicación ) o bien utilizar algún método para proteger esos directorios por contraseña, como puede ser un archivo .htaccess de Apache."

Salu2!
  #9 (permalink)  
Antiguo 18/09/2010, 23:42
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Obvio que la variable modulo nunca estará vacía porque siempre te tienes que dirigir a un modulo ;).

Si pones www.miweb.com ( o sea no tiene modulo alguno ) la variable modulo, como ves en el código, tomara el valor 'home' que es la pagina principal.

Las url amigable tienen esta forma:
www.miweb.com/historia

Si necesito pasarle mas parametros como por ej. el editorial
www.miweb.com/editorial/23
etc. etc.
  #10 (permalink)  
Antiguo 19/09/2010, 03:11
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
Obvio que la variable modulo nunca estará vacía porque siempre te tienes que dirigir a un modulo ;).

Si pones www.miweb.com ( o sea no tiene modulo alguno ) la variable modulo, como ves en el código, tomara el valor 'home' que es la pagina principal.

Las url amigable tienen esta forma:
www.miweb.com/historia

Si necesito pasarle mas parametros como por ej. el editorial
www.miweb.com/editorial/23
etc. etc.
Buenas fernandozunni,

Me gustaría saber cómo te las apañarías para que con esa estructura poder tener tus noticias en una base de datos y que en lugar del 23, apareciese el nombre de la noticia Ej. "como-hacer-una-web-modular" en la URL

Partes que tienes una estructura de base de datos cuyo id 23 corresponde con la noticia que quieres mostrar, tanto titulo como descripción.

Se me ocurre una forma pero es muy lenta y poco manejable, y es que por cada noticia agregues una regla en tu fichero .htaccess para decirle que nombre tiene que tener la noticia 23...

Perdonad pero no soy capaz de ver cómo el sistema se encargaría de traducir una url del tipo
tuweb.com/articulo/como-hacer-una-web-modular, internamente en (imagino)
tuweb.com/?pagina=articulo&id=23

Muchas gracias de antemano
  #11 (permalink)  
Antiguo 19/09/2010, 12:33
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por neodani Ver Mensaje
Buenas fernandozunni,

Me gustaría saber cómo te las apañarías para que con esa estructura poder tener tus noticias en una base de datos y que en lugar del 23, apareciese el nombre de la noticia Ej. "como-hacer-una-web-modular" en la URL

Partes que tienes una estructura de base de datos cuyo id 23 corresponde con la noticia que quieres mostrar, tanto titulo como descripción.

Se me ocurre una forma pero es muy lenta y poco manejable, y es que por cada noticia agregues una regla en tu fichero .htaccess para decirle que nombre tiene que tener la noticia 23...

Perdonad pero no soy capaz de ver cómo el sistema se encargaría de traducir una url del tipo
tuweb.com/articulo/como-hacer-una-web-modular, internamente en (imagino)
tuweb.com/?pagina=articulo&id=23

Muchas gracias de antemano
Por más que leo y leo sobre url amigables no veo la forma de conseguir el ejemplo puesto arriba.

En la siguiente página
http://www.tufuncion.com/urls_amigables
mencionan cómo hacer las urls amigables como
http://www.sitepoint.com/article/fle...t-applications

¿Me podéis decir si este es el único método para conseguirlo, y si lo consideráis seguro...?

Código PHP:
Ver original
  1. $var_array = explode(/,$PATH_INFO);
  2.     $num_param = count($var_array );
  3.  
  4.     if($num_param % 2 == 0) {
  5.  
  6.     $var_array [] =;
  7.     $num_param++;
  8.     }
  9.  
  10.     for($i=1; $i<$num_param; $i+=2) {
  11.  
  12.     $$var_array [$i] = $var_array [$i+1];
  13.     $total=$total + $$var_array [$i];
  14.     }

Muchas gracias de antemano
  #12 (permalink)  
Antiguo 19/09/2010, 13:38
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Te explico, cuando ingresas un nuevo articulo en la base de datos, en la base deberás tener las columnas correspondientes... id titulo copete cuerpo_articulo url_amigable etc.

La columna url_amigable no es otra cosa que el titulo pasado por una funcion que haga que el titulo "Esto es una url amigable" se transforme en "esto-es-una-url-amigable".

Yo utilizo esta:
Código PHP:
Ver original
  1. public function amigar($url) {
  2.  
  3.  
  4.         $a = array("á","é","í","ó","ú","ñ","Á","É","Í","Ó","Ú","Ñ");
  5.         $b = array("a","e","i","o","u","n","A","É","Í","Ó","U","Ñ");
  6.         $urli= str_replace($a, $b,$url);
  7.         $url=strtolower(trim($urli));
  8.  
  9.     // everything to lower and no spaces begin or end
  10.  
  11.     //replace accent characters, depends your language is needed
  12.     //$url=replace_accents($url);
  13.  
  14.     // decode html maybe needed if there's html I normally don't use this
  15.     //$urli = html_entity_decode($url,ENT_QUOTES,'UTF8');
  16.  
  17.     // adding - for spaces and union characters
  18.     $find = array(' ', '&', '\r\n', '\n', '+',',');
  19.     $url = str_replace ($find, '-', $url);
  20.  
  21.     //delete and replace rest of special chars
  22.     $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
  23.     $repl = array('', '-', '');
  24.     $url = preg_replace ($find, $repl, $url);
  25.  
  26.     //return the friendly url
  27.     return $url;
  28. }

De esta forma podes formar las urls de la siguiente forma:
http://www.miweb.com/editorial/71/es...a-url-amigable
en este caso cuando llamas un articulo a la DB, lo podes llamar por el id o por los dos id y url amigable:

o
www.miweb.com/editorial/esto-es-una-url-amigable
(en este segundo caso buscas en la base por el titulo solo, asi que no podes tener dos titulos iguales)

De manera que cuando clickeas en un link, en la pagina que te mostrara el articulo, tenes:
Código PHP:
Ver original
  1. $id=$_GET['idart'];
  2. $amigable=$_GET['urlamigable'];
  3. ...
  4. y haces la llamada
  5. "select * from ".$this->tabla." where id='$id' and url_amigable='$amigable' ";



Aca te muestro el renglon del .htaccess que hace que la url se convierta en amigable
Código PHP:
Ver original
  1. RewriteRule ^editorial/([0-9]+)/(.+)?$ index.php?modulo=editorial&idart=$1&urlamigable=$2 [NC,L]
Saludos.
  #13 (permalink)  
Antiguo 19/09/2010, 15:22
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Buenas fernandozunni,

Voy a intentar aplicar lo que me explicas y te cuento que tal

Muchas gracias!!
  #14 (permalink)  
Antiguo 20/09/2010, 12:48
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Buenas de nuevo,

He aplicado la funcionalidad de recoger los artículos de la base de datos, para ello en mi modulo "articulo" esta compuesto de la siguiente forma: me lista los artículos que hay en caso que no reciba ningún parámetro por $_GET['urlamigable']

articulos.php
Código PHP:
Ver original
  1. <?php
  2. if (!empty($tit_amigable_articulo)){
  3. try{
  4.     $query = "SELECT post_title,post_content FROM articulos where post_name='$tit_amigable_articulo'";
  5.     $comando = $db_master->prepare($query);
  6.     $comando->execute();
  7.     while( $datos = $comando->fetch() ) {
  8.         $post_title = $datos['post_title'].'<br />';
  9.         $post_content = $datos['post_content'].'<br />';
  10.     }
  11. } catch (Exception $e) {
  12. echo $e->getMessage();
  13.     echo "<br/>Ocurrio un error";
  14.     exit;
  15. }
  16. ?>
  17. <h3><?php echo $post_title; ?></h3>
  18. <p><?php echo $post_content; ?></p>
  19.  
  20. <?php }else{ ?>
  21.  
  22. <h1>Listado de artículos </h1>
  23. <p><b>CON URL AMIGABLE </b></p>
  24. <a href="/articulo/hola-mundo">Hola Mundo</a><br/>
  25. <a href="/articulo/directorio-web">Directorio Web</a><br/>
  26.  
  27. <p><b>SIN URL AMIGABLE</b></p>
  28. <a href="/articulo?urlamigable=hola-mundo">Hola Mundo</a><br/>
  29. <a href="/articulo?urlamigable=directorio-web">Directorio Web</a><br/>
  30.  
  31. <?php } ?>

index.php
Código PHP:
Ver original
  1. /* Si existe la variable articulo y la urlamigable*/
  2. if ((($_GET['pagina']=='articulo')) && (!empty($_GET['urlamigable']))){
  3.     $tit_amigable_articulo=$_GET['urlamigable'];
  4. }


Y he aplicado esta regla sin embargo no funciona
RewriteRule ^articulo/(.+)?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

fichero completo .htaccess
Código Apache:
Ver original
  1. RewriteEngine on
  2. RewriteBase /
  3.  
  4. # WWW al dominio
  5.     RewriteCond %{HTTP_HOST} !^www\.webme\-modular\.com$
  6.     RewriteRule (.*) http://www.webme-modular.com/$1 [R=301,L]
  7.  
  8. # Mostrar la pagina de inicio
  9.     RewriteCond %{QUERY_STRING} ^$
  10.     RewriteRule ^$ index.php?pagina=home [L]
  11.  
  12. # Cargar paginas de primer nivel
  13.     RewriteCond %{SCRIPT_FILENAME} !-f
  14.     RewriteCond %{SCRIPT_FILENAME} !-d
  15.     RewriteRule (.*) index.php?pagina=$1 [QSA,L]
  16.     RewriteRule ^articulo/(.+)?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

Podéis verla desde aquí
http://www.webmodular.neodani.com/articulo

Las url amigables de los artículos no funcionan, mientras que las otras sí :S

¿Sabéis a qué es debido, regla .htaccess?

Muchas gracias de antemano!
  #15 (permalink)  
Antiguo 20/09/2010, 16:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Hola, porque esta linea tiene tantos parentesis?
Código PHP:
Ver original
  1. if ((($_GET['pagina']=='articulo')) && (!empty($_GET['urlamigable']))){
  2.  
  3.  
  4. //creo que tendría que ir así:
  5. if ($_GET['pagina']=='articulo'  &&  !empty($_GET['urlamigable'])){

Otra cosa... si la variable url amigable esta vacia quiere decir que el usuario entra directamente, no por un link... en ese caso tambien podrías mandaro al ultimo articulo editado. (pero eso depende de lo que vos quieras).


El htaccess de la url amigable tambien puede ir asi, pero yo creo que como vos la escribiste esta bien:

RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

Última edición por fernandozunni; 20/09/2010 a las 16:33
  #16 (permalink)  
Antiguo 20/09/2010, 23:56
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
El htaccess de la url amigable tambien puede ir asi, pero yo creo que como vos la escribiste esta bien:

RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]
Pues lo he probado así, comentando la linea anterior por si era incompatible con esta, cambiándole el orden de las lineas y nada.

Se resiste esta web modular...

Código Apache:
Ver original
  1. RewriteEngine on
  2. RewriteBase /
  3.  
  4. # WWW al dominio
  5.     RewriteCond %{HTTP_HOST} !^www\.webme\-modular\.com$
  6.     RewriteRule (.*) http://www.webme-modular.com/$1 [R=301,L]
  7.  
  8. # Mostrar la pagina de inicio
  9.     RewriteCond %{QUERY_STRING} ^$
  10.     RewriteRule ^$ index.php?pagina=home [L]
  11.  
  12. # Cargar paginas de primer nivel
  13.     RewriteCond %{SCRIPT_FILENAME} !-f
  14.     RewriteCond %{SCRIPT_FILENAME} !-d
  15.     RewriteRule (.*) index.php?pagina=$1 [QSA,L]
  16. #   RewriteRule ^articulo/(.+)?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]
  17.     RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

¿Alguien lo puede probar en su servidor y decirnos si le funciona, empiezo a pensar que soy yo...?

Muchas gracias de antemano!
  #17 (permalink)  
Antiguo 21/09/2010, 07:47
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

He hecho la pruebas a fin de encontrar el fallo y he visto que si pongo solo estas reglas funciona pero no carga el css


RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]
RewriteRule (.*) index.php?pagina=$1 [QSA,L]


Y si dejo solo estas, me carga correctamente el modulo articulo pero me deja de funcionar el resto.
Url tipo
http://www.webmodular.com/articulo no funcionan, muestra not found y solo van las que son del tipo

http://www.webmodular.com/articulo/nombre-articulo

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]


¿Alguien puede echarme una mano?

Muchas gracias de antemano!
  #18 (permalink)  
Antiguo 21/09/2010, 07:50
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Agrega arriba del todo:
Options +FollowSymLinks
Código PHP:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /

Código PHP:
Ver original
  1. //esta linea
  2. RewriteRule (.*) index.php?pagina=$1 [QSA,L]
  3.  
  4. //cambiala por esta
  5. RewriteRule ^(.*)/?$ index.php?pagina=$1 [QSA,L]
  #19 (permalink)  
Antiguo 21/09/2010, 12:53
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Nada

Este el fichero .htaccess completo y funciona todo menos los artículos que da un not found

http://www.webmodular.neodani.com/articulo/hola-mundo

En cambio así si que funciona
http://www.webmodular.neodani.com/ar...ble=hola-mundo
o así
http://www.webmodular.neodani.com/in...ble=hola-mundo



Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. # WWW al dominio
  6.     RewriteCond %{HTTP_HOST} !^www\.webmodular.neodani\.com$
  7.     RewriteRule (.*) http://www.webmodular.neodani.com/$1 [R=301,L]
  8.  
  9. # Mostrar la pagina de inicio
  10.     RewriteCond %{QUERY_STRING} ^$
  11.     RewriteRule ^$ index.php?pagina=home [L]
  12.  
  13. # Cargar paginas modulares
  14.     RewriteCond %{SCRIPT_FILENAME} !-f
  15.     RewriteCond %{SCRIPT_FILENAME} !-d
  16.     RewriteRule ^(.*)/?$ index.php?pagina=$1 [QSA,L]
  17.     RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

Me dijiste así, verdad?

¿Se os ocurre que puede estar pasando?!

Mil gracias por vuestro tiempo!
  #20 (permalink)  
Antiguo 21/09/2010, 15:31
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Una pregunta, tenes habilitado el mod_rewrite ??
Porque por lo ultimo que escribis, no anda la direcc que tiene url amigable y si te andan las otras.

Te muestro como tengo yo un .htaccess que anda al pelo, a ver si te sirve de guia:
Código PHP:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3.  
  4. RewriteBase /
  5.  
  6.  
  7.  
  8. RewriteCond &#37;{REQUEST_FILENAME} !-f
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10.  
  11. RewriteRule ^([A-Za-z0-9]+)/?$ index.php?modulo=$1 [NC,L]
  12. RewriteRule ^libro/([0-9]+)?$ index.php?modulo=libro&cur=$1 [NC,L]
  13. RewriteRule ^foro/([0-9]+)?$ index.php?modulo=foro&cur=$1 [NC,L]
  14. RewriteRule ^editoriales/([0-9]+)/(.+)?$ index.php?modulo=editoriales&idart=$1&urlamigable=$2 [NC,L]
En el renglon 8, sale unos caracteres raros, pero basicamente es igual que la de abajo.
  #21 (permalink)  
Antiguo 21/09/2010, 23:44
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
Una pregunta, tenes habilitado el mod_rewrite ??
Porque por lo ultimo que escribis, no anda la direcc que tiene url amigable y si te andan las otras.

Te muestro como tengo yo un .htaccess que anda al pelo, a ver si te sirve de guia:
Código PHP:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3.  
  4. RewriteBase /
  5.  
  6.  
  7.  
  8. RewriteCond &#37;{REQUEST_FILENAME} !-f
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10.  
  11. RewriteRule ^([A-Za-z0-9]+)/?$ index.php?modulo=$1 [NC,L]
  12. RewriteRule ^libro/([0-9]+)?$ index.php?modulo=libro&cur=$1 [NC,L]
  13. RewriteRule ^foro/([0-9]+)?$ index.php?modulo=foro&cur=$1 [NC,L]
  14. RewriteRule ^editoriales/([0-9]+)/(.+)?$ index.php?modulo=editoriales&idart=$1&urlamigable=$2 [NC,L]
En el renglon 8, sale unos caracteres raros, pero basicamente es igual que la de abajo.
Siguiendo tu ejemplo, tampoco lo consigo, empiezo a pensar que las reglas están bien pero igual hay algo en la parte modular que no está funcionando correctamente

Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. RewriteCond %{REQUEST_FILENAME} !-f
  6. RewriteCond %{REQUEST_FILENAME} !-d
  7.  
  8. RewriteRule ^([A-Za-z0-9]+)/?$ index.php?pagina=$1 [NC,L]
  9. RewriteRule ^articulo/([A-Za-z0-9]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

Es muy raro no?

Y sí que está activado el mod_rewrite porque la primera regla la coge bien, solo falla cuando intento ir a los articulos dichosos

Dejo la web comprimida por si alguien quiere echarle un ojo, a ver si te funciona fernandozunni, así sabré si soy yo o es cómo está construida modularmente lo que falla, porque ya no se qué hacer.

http://www.megaupload.com/?d=2P6LJXGV

Gracias a todos

Última edición por neodani; 22/09/2010 a las 00:13
  #22 (permalink)  
Antiguo 22/09/2010, 09:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Hola, estuve probando tu codigo y con errores pero funciona (yo trabajo con WampServer), las url amigables funcionan, uno de los errores que aparece cuando voy al home es
Código PHP:
Ver original
  1. Notice: Undefined index: pagina in C:\wamp\www\WebmodularV2\includes\metatags.php on line 11
fijate los errores que tenes allí.

Otra cosa que hice fue eliminar del index.php esta linea
Código PHP:
Ver original
  1. if ($_GET['pagina']=='articulo'  &&  !empty($_GET['urlamigable'])){
  2.     $tit_amigable_articulo=$_GET['urlamigable'];
  3. }
No entiendo bien para que sirve.

Creo que en general el problema esta mas en algunos errores de configuración que en el mod rewrite.
  #23 (permalink)  
Antiguo 22/09/2010, 09:33
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
Hola, estuve probando tu codigo y con errores pero funciona (yo trabajo con WampServer), las url amigables funcionan, uno de los errores que aparece cuando voy al home es
Código PHP:
Ver original
  1. Notice: Undefined index: pagina in C:\wamp\www\WebmodularV2\includes\metatags.php on line 11
fijate los errores que tenes allí.

Otra cosa que hice fue eliminar del index.php esta linea
Código PHP:
Ver original
  1. if ($_GET['pagina']=='articulo'  &&  !empty($_GET['urlamigable'])){
  2.     $tit_amigable_articulo=$_GET['urlamigable'];
  3. }
No entiendo bien para que sirve.

Creo que en general el problema esta mas en algunos errores de configuración que en el mod rewrite.
No me digas! juerrr la volví a bajar del fichero que te subí, y solo modifiqué del fichero index.php esa linea que mencionas, lo probé y nada, la parte de los artículos sigue sin funcionarme.

http://www.webmodular.com/articulo/hola-mundo
http://www.webmodular.com/articulo/directorio-web

Me redirige a la página de error "Pagina que buscas no existe"

No modificaste el fichero .htaccess que había en el fichero ni nada más??

Yo también uso en local el WAMPSERVER

Última edición por neodani; 22/09/2010 a las 09:45
  #24 (permalink)  
Antiguo 22/09/2010, 09:48
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 2 meses
Puntos: 9
Respuesta: Mejorar web modular

Me olvidé de dicirte en el .htaccess, comente estas lineas porque yo no las utilizo
Código PHP:
Ver original
  1. # WWW al dominio
  2.     #RewriteCond %{HTTP_HOST} !^www\.webme\-modular\.com$
  3.     #RewriteRule (.*) http://www.webme-modular.com/$1 [R=301,L]
  4.  
  5. # Mostrar la pagina de inicio
  6.     #RewriteCond %{QUERY_STRING} ^$
  7.     #RewriteRule ^$ index.php?pagina=home [L]

articulo/hola-mundo
articulo/directorio-web
a mi tampoco me andan, pero debe ser un problema de configuarion porque
/soporte
/faq
/articulo
/futbol
si funcionan con url amigables, guiate por las que andan a ver si solucionas el problema.

/inicio (tambien anda con el problema que te dije antes 'metatags.php')
  #25 (permalink)  
Antiguo 22/09/2010, 10:50
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por fernandozunni Ver Mensaje
Me olvidé de dicirte en el .htaccess, comente estas lineas porque yo no las utilizo
Código PHP:
Ver original
  1. # WWW al dominio
  2.     #RewriteCond %{HTTP_HOST} !^www\.webme\-modular\.com$
  3.     #RewriteRule (.*) http://www.webme-modular.com/$1 [R=301,L]
  4.  
  5. # Mostrar la pagina de inicio
  6.     #RewriteCond %{QUERY_STRING} ^$
  7.     #RewriteRule ^$ index.php?pagina=home [L]

articulo/hola-mundo
articulo/directorio-web
a mi tampoco me andan, pero debe ser un problema de configuarion porque
/soporte
/faq
/articulo
/futbol
si funcionan con url amigables, guiate por las que andan a ver si solucionas el problema.

/inicio (tambien anda con el problema que te dije antes 'metatags.php')
Aunque parezca mentira ahora me quedo más tranquilo xD, porque si a ti bajándote la web te funcionaba las url

articulo/hola-mundo
articulo/directorio-web

No sabía que mas mirar, pero si dices que tampoco te funciona, estoy contigo de que debe ser algo la programación de los ficheros index.php o conf.php pero los he revisado al detalle sin encontrar donde puede estar el problema.
  #26 (permalink)  
Antiguo 22/09/2010, 10:54
Avatar de jamesjara  
Fecha de Ingreso: mayo-2008
Ubicación: san jose
Mensajes: 449
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Mejorar web modular

eso si es vulnerable a inclusion remota o a una escalacion.. por eso te recomiendo hacer como dice un amigo mas arriba o agregas un CASE SWICHT
Cita:
$modulo=!empty($_GET['modulo']) ? $_GET['modulo'] : 'home';
$module=htmlentities($modulo);
$module=strip_tags($module);
$module=(string)$module;
$chequeodemodulos=array('home', 'ubicacion', 'historia', 'editorial', 'foro', 'fotos', 'contacto');
if(!in_array($module, $chequeodemodulos)){
$module="error";
}
__________________
X7CLOUD El webservice latino!
Compatible
con mysql,sql,sqlitte.
Compatible con extjs , sencha , smargwt, Gwt , Jquery , Charts, Streaming.
  #27 (permalink)  
Antiguo 22/09/2010, 14:28
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Conseguidoooooooo! al final me armé un index.php y estuve probando reglas mod_rewrite hasta que conseguí que funcionasen las reglas como debían funcionar.

Luego lo apliqué en la web modular y funcionó perfecto sin tocar nada xD

Aquí va la clave del asunto

Código Apache:
Ver original
  1. Options +FollowSymLinks
  2. RewriteEngine On
  3. RewriteBase /
  4.  
  5. # WWW al dominio
  6.     RewriteCond %{HTTP_HOST} !^www\.webme\-modular\.com$
  7.     RewriteRule (.*) http://www.webme-modular.com/$1 [R=301,L]
  8.  
  9. # Mostrar la pagina de inicio
  10.     RewriteCond %{QUERY_STRING} ^$
  11.     RewriteRule ^$ index.php?pagina=home [L]
  12.  
  13. # Cargar paginas modulares
  14.     RewriteCond %{SCRIPT_FILENAME} !-f
  15.     RewriteCond %{SCRIPT_FILENAME} !-d
  16.     RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?pagina=$1 [QSA]
  17.     RewriteRule ^articulo/([A-Za-z0-9-]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]

El problema según creo era en la linea superior del ^articulo que se tragaba todo lo que le pasabas.
RewriteRule ^(.*)/?$ index.php?pagina=$1 [QSA,L]

La sustituí por la que aparece en el código y ahora lo veo funcionando.

Eso sí... tuve que dejar de utilizar direcciones tipo

/directorio/futbol por directorio-futbol porque sino no coincidía con ninguna regla y no mostraba nada.

Muchas gracias por vuestra ayuda
  #28 (permalink)  
Antiguo 22/09/2010, 14:37
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Cita:
Iniciado por neodani Ver Mensaje
Eso sí... tuve que dejar de utilizar direcciones tipo

/directorio/futbol por directorio-futbol porque sino no coincidía con ninguna regla y no mostraba nada.

Muchas gracias por vuestra ayuda
Estoy en racha :D

Código Apache:
Ver original
  1. # Cargar paginas modulares
  2.     RewriteCond %{SCRIPT_FILENAME} !-f
  3.     RewriteCond %{SCRIPT_FILENAME} !-d
  4.     RewriteRule ^([A-Za-z0-9-]+)/?$ index.php?pagina=$1 [QSA,L]
  5.     RewriteRule ^articulo/([A-Za-z0-9-]+)/?$ index.php?pagina=articulo&urlamigable=$1 [NC,L]
  6.     RewriteRule ^(directorio/[A-Za-z0-9-]+)?$ index.php?pagina=$1 [QSA,L]

Funcionando prototipo en http://www.webmodular.neodani.com

Saludos!
  #29 (permalink)  
Antiguo 22/09/2010, 15:02
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Mejorar web modular

Buenas,

Una mejora más en la web modular...

¿Me recomendáis que ponga fuera del Document root todos los ficheros y solo deje el index.php dentro de él?

<VirtualHost *:80>
DocumentRoot "C:/wamp/www/04-MODULAR_WebME/"
ServerName webme-modular.com
ServerName www.webme-modular.com
ServerAlias webme-modular.com
CustomLog C:\wamp\logs\acces_04-MODULAR_WebME.log combined
ErrorLog C:\wamp\logs\error_04-MODULAR_WebME.log
</VirtualHost>

He creado dentro de C:\wamp\ una carpeta que se llama privado_webmodular y dentro de ella están todas las carpetas (include, libs, modulos...)

Lo veis bien? vale la pena? o puedo conseguir la misma segurida utilizando alguna regla en el .htaccess?

Muchas gracias de antemano!
  #30 (permalink)  
Antiguo 22/09/2010, 15:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Mejorar web modular

¡realmente vale la pena!

lo mejor que puedes hacer en cuanto a seguridad es tener los scripts de ejecución fuera del alcance del usuario, así que me parece una técnica muy acertada...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: modular, mejoras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.