Autor Tema: [Resuelto] Ayuda con .htaccess  (Leído 9402 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
[Resuelto] Ayuda con .htaccess
« : febrero 19, 2010, 11:07:52 am »
Como estan amigos de antemano gracias por este foro.
Saben mi pequeño gran problema es que quiero colocar las url amigables a mi sitio, ya que quiero que se vea mejor y asi los buscadores indexen mas mis paginas, aqui les dejo mis archivitos y mi web espero puedan ayudarme en este problema.

la web es http://www.jfmsanmiguel.co.cc/
Esta en el servidor gratuito de www.000webhost.com

mi .htaccess
Código: [Seleccionar]
Options +FollowSymLinks
RewriteEngine on
#4 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9
#3 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5&$6=$7
#2 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5
#1 variable
Rewriterule ^(.*)/(.*)/(.*)/$ $1.php?$2=$3 

mi archivo url_amigable.php
Código: [Seleccionar]
<?php
/***
Archivo descargado de http://willy.tiperu.com/
***/
//Iniciamos o continuamos la sesión encargada de evitar el bucle infinito
session_name("url_amigable");
session_start();
//Almacenamos datos del server, script y variables (pasadas por GET)
$Server=$_SERVER['SERVER_NAME'];
$Script=$_SERVER['PHP_SELF'];
$Variables=$_SERVER['QUERY_STRING'];

//Verificando si tiene variables por GET 
//y no se han pasado datos mediante un form por POST
//ya q al redireccionar un  post puede ocasionar errores.
//Tambien verificamos que la variable de sesión 'Listo' 
//sea diferente a 1, esto nos eviara un bucle infinito.

if(!empty($Variables) && $_SERVER['REQUEST_METHOD']=='GET' && $_SESSION['Listo']!=1){ 
    
//Si tiene variables pasadas por GET se procede a hacer el cambio.
    //1. Agrupando $Variables por "variable=valor" en el array $Variable.
    
$Variable=explode("&",$Variables);
    
//2. Sustituyendo "=" por "," y concadenandolo en variable $Amigable.
    
for($i=0;$i<count($Variable);$i++){
        
$Amigable.="/".str_replace("=","/",$Variable[$i]);
    }
    
//3. Quitando la extension ".php" a $Script para simular un directorio.
    
$Dir=str_replace(".php","",$Script);
    
//4. Generando la URL Amigable.
    
$URL_AMIGABLE="http://".$Server.$Dir.$Amigable."/";
    
//5. Colocando la variable de sesión 'Listo' a 1 para evitar el bucle infinito
    // al redireccionar la web.
    
$_SESSION['Listo']=1;
    
//6. Redireccionando a la url amigable
    
header("Location: $URL_AMIGABLE");
    
//7. Exit hará que culmine hasta este punto el script, si no estuviera 'exit'
    // el script continuaría ejecutándose y llegaría hasta el final del mismo, es decir,
    // a la parte donde colocamos a la variable de sesión 'Listo' en cero, originandose 
    // entonces un bucle infinito.
    
exit;
}
//Cambie $_URL_BASE por la ruta raiz de su web, ya que al simular la url amigable
//directorios, hará que no muestre adecuadamente los origenes de los recursos que 
//llama su página web.
$_URL_BASE="http://".$Server."/default.php";
?>


un ejemplo de como llamo a las paginas
Código: [Seleccionar]
<a href='editorial/publicacion/$extraer_editorial[id]/'><img src='imagenes/leer.jpg' alt='Leer Completo' width='94' height='14' border='0' /></a> 
En editorial.php (Lugar donde me debe de mandar el anlace) simplemente llamo a url_amigable.php
Código: [Seleccionar]
<?php
//llamo a url_amigable
include("url_amigable.php");
?>

La web en la que lo quiero implementar es: http://www.jfmsanmiguel.co.cc/

Agradeceré mucho su ayuda, ya subi el .htaccess a 000.webhost, pero me da error siempre al dar clic en el enlace, ayuda soy novato con las url amigables.

Bendiciones amigos.
« Última Modificación: marzo 04, 2010, 10:27:24 am por victoramaya »
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #1 : febrero 19, 2010, 02:00:29 pm »
Bien, hay un problema con esta implementación que estas realizando.

El principal problema es que cada vez que alguien visite un link de esos, lo primero que va a hacer tu codigo es convertir el enlace a una URL amigable y luego hace la redireccion a esta. Esto implica que cada ves que alguien haga clic en un link va a resultar en dos peticiones a tu servidor, de las cuales una seria totalmente innecesaria.

La manera de hacer esto es cambiando todos los links por sus variantes amigables desde el principio. Te dejo el codigo que se utiliza en http://flor360.com para crear las URL:
Código: [Seleccionar]
<?php
function URL_AMIGABLE($URL){
    
$URL preg_replace("`\[.*\]`U","",$URL);
    
$URL preg_replace('`&(amp;)?#?[a-z0-9]+;`i','-',$URL);
    
$URL htmlentities($URLENT_COMPAT'utf-8');
    
$URL preg_replace"`&([a-z])(acute|uml|circ|grave|ring|cedil|slash|tilde|caron|lig|quot|rsquo);`i","\\1"$URL );
    
$URL preg_replace( array("`[^a-z0-9]`i","`[-]+`") , "-"$URL);
    return 
strtolower(trim($URL'-')).".html";
}
?>



Y podrias usarlo asi (por poner un ejemplo):

Código: [Seleccionar]
<?php
echo sprintf("<a href='editorial/publicacion/%s'>blah blah</a>"URL_AMIGABLE($extraer_editorial['id'].'-'.$extraer_editorial['titulo']);
?>


Luego en el .htaccess:

Código: [Seleccionar]
RewriteEngine on
Options +FollowSymLinks
RewriteBase /

RewriteRule ^editorial/publicacion/([0-9]+).*$ index.php?id_publicacion=$1


Editado: el codigo de URL_AMIGABLE() no lo invente yo, pero no encuentro de donde lo saque tampoco :phew:
« Última Modificación: febrero 19, 2010, 02:04:37 pm por vlad »

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #2 : febrero 19, 2010, 03:07:39 pm »
Muchas gracias vlad, te agradezco, lo probare y luego te cuento si me furulo.
Bendiciones.
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #3 : febrero 20, 2010, 09:26:59 am »
Hola amigos continuo con lo del .htaccess, creo que estoy muy confundido con esto.

Intente con lo que vlad me dijo pero ps me confundi mas  :phew: intente solo con el .htaccess y creo que solo con eso podria comenzar porque mis redirecciones creo son 'simples', ayuda.

Quisiera saber si con solo tener el .htaccess y colocar las url estaticas en los enlaces ya me deberia de funcionar la redireccion?

Otra es que en mi localhost si me redirecciona solo con el uso del .htaccess ejm:
URL dinamica
Código: [Seleccionar]
http://localhost/Nueva JFM/editorial.php?publicacion=12URL con htaccess
Código: [Seleccionar]
http://localhost/Nueva JFM/editorial/publicacion/12/
Pero hay un gran problema con eso porque no me muestra los estilos ni las imagenes ni nada, solo la informacion me muestra, encontre que abria que poner toda la direccion de los recursos, pero hago esto con el estilo al llamarlo en mis paginas y nada
Código: [Seleccionar]
<link href="D:/wamp/www/Nueva JFM/Estilo/estilo.css" rel="stylesheet" type="text/css" />
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #4 : febrero 20, 2010, 11:32:11 am »
Umm si, eso si es un problema, eso es por lo de RewriteBase /

Código: [Seleccionar]
RewriteBase /Nueva JFM/

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #5 : febrero 20, 2010, 12:23:07 pm »
Me da este error:
500 internal service error

mi .htaccess quedaria
Código: [Seleccionar]
Options +FollowSymLinks
RewriteEngine on
#4 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5&$6=$7&$8=$9
#3 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5&$6=$7
#2 variables
Rewriterule ^(.*)/(.*)/(.*)/(.*)/(.*)/$ $1.php?$2=$3&$4=$5
#1 variable
Rewriterule ^(.*)/(.*)/(.*)/$ $1.php?$2=$3
RewriteBase /Nueva JFM/

Coloco el error que me da en la imagen
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #6 : febrero 20, 2010, 01:07:21 pm »
RewriteEngine on
Options +FollowSymLinks
RewriteBase /Nueva JFM/

RewriteRule ^editorial/publicacion/([0-9]+).*$ index.php?id_publicacion=$1

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #7 : febrero 20, 2010, 03:11:54 pm »
RewriteEngine on
Options +FollowSymLinks
RewriteBase /Nueva JFM/

RewriteRule ^editorial/publicacion/([0-9]+).*$ index.php?id_publicacion=$1


Me sigue dando el mismo error amigo, alguna otra opcion que sea sencilla o como podria hacerle?
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #8 : febrero 20, 2010, 05:55:53 pm »
Me sigue dando el mismo error amigo, alguna otra opcion que sea sencilla o como podria hacerle?

Por favor pon tu .htacces actual. Deberia contener únicamente esto:

Cita de: .htaccess
RewriteEngine on
Options +FollowSymLinks
RewriteBase /Nueva JFM/

RewriteRule ^editorial/publicacion/([0-9]+).*$ index.php?id_publicacion=$1

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re:Ayuda con .htaccess
« Respuesta #9 : febrero 22, 2010, 09:13:03 pm »
Por favor pon tu .htacces actual. Deberia contener únicamente esto:


No sera que el proveedor de hosting no tiene habilitado el modulo de mod_rewrite?


Desconectado darkness51

  • Sv Member
  • ***
  • Mensajes: 208
    • DWD&Solutions
Re:Ayuda con .htaccess
« Respuesta #10 : febrero 22, 2010, 09:41:07 pm »

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !\.(js|ico|gif|jpg|jpeg|png|css|swf|xml|txt|php)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^indicadores/([0-9]+)/([0-9]+)/?$ indicadores.php?id=$1&hoja=$2 [L]

Estas son unas reglas que yo ocupe para una aplicación que desarrolle desde hace tiempo. Lo otro es que para evitar el error 500 tienes que tener habilitado el módulo rewrite de apache y cambiar la directiva AllowOverride a Auth o ALL y ya con eso te debería de funcionar.

Saludos.
http://www.houseofsysadmin.com
http://www.dwdandsolutions.com

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #11 : febrero 22, 2010, 10:17:04 pm »
No sera que el proveedor de hosting no tiene habilitado el modulo de mod_rewrite?


Creo que tiene que tenerlo activado porque al menos le funciono en este caso:
Pero hay un gran problema con eso porque no me muestra los estilos ni las imagenes ni nada, solo la informacion me muestra, encontre que abria que poner toda la direccion de los recursos, pero hago esto con el estilo al llamarlo en mis paginas y nada

Pero ahi tenia mal la base, ahora no se si le funciono y ya no posteo o se rindio XD

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #12 : febrero 25, 2010, 02:13:48 pm »
Creo que tiene que tenerlo activado porque al menos le funciono en este caso:
Pero ahi tenia mal la base, ahora no se si le funciono y ya no posteo o se rindio XD
Hola amigos antes que nada me disculpo porque no habia podido entrar al internet en estos dias, y muchas gracias por toda su ayuda, creanme que pondre en practica sus ayudas y luego les comento si?

Y pues el hosting en donde tengo alojada la pagina es 000webhost.com y si tiene activado el mod_rewrite, o por lo menos eso me dice el phpinfo  :p :p

Muchas gracias amigos, y les sigo contando a ver si me furula esta vez.
Bendiciones a todos los de este grande foro
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vmaya

  • Sv Member
  • ***
  • Mensajes: 379
Re:Ayuda con .htaccess
« Respuesta #13 : febrero 26, 2010, 02:23:24 pm »
Hola amigos como estan, pues bueno no me quiero rendir con esto y ps les dare mas datos quiza ahora si pueda  x_x

MI SERVIDOR LOCAL
1 Mi servidor localhost tengo instalado WAMPSERVER
2 No he modificado el archivo de configuracion httpd.conf de apache en el WAMP (no se que modificarle, porque creo que se debe de modificar algo)
3 Les dejo mi httpd.conf

MI HOSTING
1 Lo tengo en 000.webhost.com pero como no tengo $ ps lo tengo en el gratuito.
2 Si está activado el mod_rewrite o por lo menos eso supongo  x_x
3 Les dejo la imagen en donde estan los modulos y ahi aparece el mod_rewrite

MI .HTACCESS ACTUAL
Código: [Seleccionar]
Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !\.(js|ico|gif|jpg|jpeg|png|css|swf|xml|txt|php)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)/(.*)/$ $1.php?$2=$3

Si necesitan algo mas pues solo me dicen, es que quiero aprender a hacer esta cosa  :thumbsup:

Saludos amigos y muchas gracias por ayudarme con esto, por eso este es el mejor foro  ohyea:
No hay que ser gran literario para escribir poesía, basta con ser un sentimental empedernido y siempre tener a la mano papel y lápiz.

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Ayuda con .htaccess
« Respuesta #14 : febrero 26, 2010, 03:23:32 pm »
Disculpa, solo para estar en sintonia, danos un ejemplo de la URL que esperas que pongan y los parametros a index.php que esperas?

porque veo que ese htaccess tiene cosas totalmente distintas a las que hemos discutido.