Simple Machines Community Forum

SMF Support => Español (Spanish) => Language Specific Support => Tutoriales => Topic started by: aBsTrAcTo on November 08, 2007, 04:31:02 PM

Title: QueryString.php
Post by: aBsTrAcTo on November 08, 2007, 04:31:02 PM
Bueno. esta falla esta en smf desde hace ya varias versiones.

Aparentemente siempre nos muestra .html (si esta habilitado) Pero "aparentemente" por que siempre nuestra primer visita va a salir mal ya que los enlaces nos los muestra /foro/index.php?PHPSESSID=xxxxxxxx

Cuando se crea la cookie. ahi ya podemos ver html siempre.. elimininas tu cookie y vuelve a salir este detalle.

El problema aqui es. 1.- Como a googlebot no le vas a meter cookie. siempre ira cacheando tus urls con ?board= ?topic=

Las urls que cachea con .html son las que estan añadidas de modo manual en post, plantillas. o enlaces.

Busquen en querystring.php    // Debugging templates, are we?


Y de ahi al final. remplacen por
// Debugging templates, are we?

elseif (isset($_GET['debug']))

$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);



// This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo.

if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])

{

// Let's do something special for session ids!

if (defined('SID') && SID != '')

$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);

else

$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);

}



// Return the changed buffer.

return $buffer;

}



?>


Con esto ya tus urls con html seran cacheables.

Tambien es cacheable con sitemaps de googlehttp://www.google.com/webmasters/sitemaps/?hl=es
Title: Re: QueryString.php
Post by: H@free on November 08, 2007, 06:27:02 PM
Pero esto funciona con seo4smf ???

http://www.simplemachines.org/community/index.php?topic=203647.msg1294800#msg1294800


Gracias es bueno saber estos datos...
Title: Re: QueryString.php
Post by: aBsTrAcTo on November 08, 2007, 09:40:37 PM
Con ese mod no hay problema ya que lo modifica
Title: Re: QueryString.php
Post by: HotJoint on November 08, 2007, 10:02:35 PM
mm no entendi muy bien cual es el problema y en que ayuda la solucion que nos brindaste. podrias explicarle mejor a este noob?
Title: Re: QueryString.php
Post by: aBsTrAcTo on November 08, 2007, 11:48:08 PM
ok.
http://www.campusvirtualsp.org/foros Haz tu primer visita
a cualquier link que des click te va a llevar a
/index.php?PHPSESSID=logenerado&board=27.0

si das despues un click a un tema ya te llevara a la ruta correctamente ejemplo;

http://www.campusvirtualsp.org/foros/index.php/topic,63.0.html

Apartir de esa segunda carga las urls de todo el foro ya se muestran correctamente.

Googlebot nunca ve las urls con .html al menos que sean enlaces en temas, mensajes o externos
http://72.14.253.104/search?sourceid=navclient&hl=es&ie=UTF-8&rls=GGLJ,GGLJ:2006-31,GGLJ:es&q=cache:http%3A%2F%2Fwww.campusvirtualsp.org%2Fforos%2Findex.php fijate en como toma las direcciones sin .html

lo cual afecta para tener nuestro foro bien optimizado.

con modificando el fichero tus direcciones se vuelven cacheables correctamente a como lo puedes ver aquí
http://72.14.253.104/search?sourceid=navclient&hl=es&ie=UTF-8&rls=GGLJ,GGLJ:2006-31,GGLJ:es&q=cache:http%3A%2F%2Fwww.losforosde.com%2Farte%2Findex.php
Title: Re: QueryString.php
Post by: HotJoint on November 08, 2007, 11:57:10 PM
aaaa ya veo muy util!1 gracias :)
Title: Re: QueryString.php
Post by: el-brujo on November 12, 2007, 05:25:07 PM
bien por tu aprotación aBsTrAcTo.

Pero el $buffer de debug

   elseif (isset($_GET['debug']))

No hace falta tocarlo (creo)

La modificación sería simplemente cambiar:


if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?(?:' . SID . ';)((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html?' . SID . '\$2\"'", $buffer);


Por:


if (defined('SID') && SID != '')
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);


Y no sé si habría que modificar esta linea:

// Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit().  This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
// !!! smflib
if (empty($_COOKIE) && SID != '' && empty($context['browser']['possibly_robot']) && @version_compare(PHP_VERSION, '4.3.0') != -1)
$buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '(?!\?' . preg_quote(SID, '/') . ')(\?)?/', '"' . $scripturl . '?' . SID . '&', $buffer);


Y poner el $buffer en .html y sin SID
Title: Re: QueryString.php
Post by: YesteR on December 03, 2007, 04:26:05 PM
... Spammer de palo xD

A ver si aprendes a editar un poco los mensajes y dejar de hacer doble post..
Title: Re: QueryString.php
Post by: aBsTrAcTo on December 03, 2007, 09:33:11 PM
Pues eso lo habia hecho desde hace mucho. Pero volvia a tirarme el mismo error (no cacheables correctamente)

Por eso elimino la linea de
if (empty($_COOKIE) && SID != '' && empty($context['browser'............
Title: Re: QueryString.php
Post by: H@free on December 28, 2007, 01:00:53 PM
Había pensado que el seo4 realizaba esto, luego de revisarlo con tiempito no modifica tal modificación...

Lo he realizado y ahora creo que ya lo he solucionado gracias...  ;D
Title: Re: QueryString.php
Post by: Iscate on June 01, 2008, 02:48:18 PM
por que cuando intento modificar el querry no me funciona, por que cuando copio y intento pegar el texto no me lo copia como esta sino me lo pone todo en una linea, o sea horizontal
Title: Re: QueryString.php
Post by: aBsTrAcTo on July 05, 2008, 12:02:06 AM
Creo que algo paso con el style de smf. por que antes creo recordar que si podias copiar y pegar
bien sin esto que comentas.

Por cierto con el mod seo4 no hace falta editar el querry. si lo editas antes de meter el mod.. te dara error siempre hay que instalar el modseo4  con el querry original.

se cachean bien


**   // Do nothing if the session is cookied, or they are a crawler - guests are caught by redirectexit().  This doesn't work below PHP 4.3.0, because it makes the output buffer bigger.
**   // !!! smflib
**   // Debugging templates, are we?
**   elseif (isset($_GET['debug']))
**         $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
**
**   // This should work even in 4.2.x, just not CGI without cgi.fix_pathinfo.
**   if (!empty($modSettings['queryless_urls']) && (!$context['server']['is_cgi'] || @ini_get('cgi.fix_pathinfo') == 1) && $context['server']['is_apache'])
**   {
**      // Let's do something special for session ids!
**      if (defined('SID') && SID != '')
**         $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
**      else
**         $buffer = preg_replace('/"' . preg_quote($scripturl, '/') . '\?((?:board|topic)=[^#"]+?)(#[^"]*?)?"/e', "'\"' . \$scripturl . '/' . strtr('\$1', '&;=', '//,') . '.html\$2\"'", $buffer);
**   }
**
**   // Return the changed buffer.
**   return $buffer;
**}
**
**?>

cada ** es un salto de linea.. copia pega y borra los dos **... no hagas el error de borrar todos los *. pues vienen en el codigo... borra los ** (dos asteriscos juntos)
Title: Re: QueryString.php
Post by: MarioH on July 23, 2008, 06:27:37 AM
de ninguna forma me funciono.

probe enviando spider a mi web, y siempre entrada con la url larga.  y no pillaba los html
Title: Re: QueryString.php
Post by: LogMare on August 22, 2008, 12:05:26 PM
Excelente  ;)

salu2!!!
Title: Re: QueryString.php
Post by: Arkangel on May 19, 2009, 07:45:55 PM
al parecer este topic lleva mas 120 dias offline .. alguna solucion?