<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comentarios en: Urls amigables con mod_rewrite</title>
	<atom:link href="http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/feed" rel="self" type="application/rss+xml" />
	<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html</link>
	<description>Blog de posicionamiento en buscadores</description>
	<lastBuildDate>Mon, 01 Mar 2010 09:34:43 +0100</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: sara bosch</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-568</link>
		<dc:creator>sara bosch</dc:creator>
		<pubDate>Mon, 19 Oct 2009 14:34:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-568</guid>
		<description>Hola Chema, 
Sí, este es un problema que tienen muchisimas web. Yo me lo he encontrado más de una vez y cada vez lo he tenido que solucionar de maneras distintas dependiendo de la programación. Como es bastante largo he hecho un post de &lt;a href=&quot;http://www.posicionapro.com/blog/seo-contenidos-duplicados.html&quot; rel=&quot;nofollow&quot;&gt;como solucionar el problema de contenido duplicado por el paso de parámetros&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Hola Chema,<br />
Sí, este es un problema que tienen muchisimas web. Yo me lo he encontrado más de una vez y cada vez lo he tenido que solucionar de maneras distintas dependiendo de la programación. Como es bastante largo he hecho un post de <a href="http://www.posicionapro.com/blog/seo-contenidos-duplicados.html" rel="nofollow">como solucionar el problema de contenido duplicado por el paso de parámetros</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-566</link>
		<dc:creator>Chema</dc:creator>
		<pubDate>Sun, 18 Oct 2009 08:25:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-566</guid>
		<description>Hola de nuevo.
Tengo un problema, me acabo de dar cuenta que en mi web, en está sección se logra entrar de muchas maneras: listo algunas:
/registrorestaurante.php?Pagina=ranking.php
/registrorestaurante.php?Pagina=mostrarrestauranteseleccionado.php?Id=40
/registrorestaurante.php?Pagina=mostrarrecetaseleccionada.php?Id=11&#124;Receta
y asi consecutivamente. Como puedo hacer para que redireccione a /registrorestaurante.php y no lo consideren como contenido &quot;infintuplicado&quot;

Gracias y saludos</description>
		<content:encoded><![CDATA[<p>Hola de nuevo.<br />
Tengo un problema, me acabo de dar cuenta que en mi web, en está sección se logra entrar de muchas maneras: listo algunas:<br />
/registrorestaurante.php?Pagina=ranking.php<br />
/registrorestaurante.php?Pagina=mostrarrestauranteseleccionado.php?Id=40<br />
/registrorestaurante.php?Pagina=mostrarrecetaseleccionada.php?Id=11|Receta<br />
y asi consecutivamente. Como puedo hacer para que redireccione a /registrorestaurante.php y no lo consideren como contenido &#8220;infintuplicado&#8221;</p>
<p>Gracias y saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DavidM</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-554</link>
		<dc:creator>DavidM</dc:creator>
		<pubDate>Fri, 25 Sep 2009 11:40:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-554</guid>
		<description>Publiqué ayer un post sobre &lt;a href=&quot;http://www.posicionapro.com/blog/quitar-la-barra-final-de-las-urls.html&quot; rel=&quot;nofollow&quot;&gt;cómo eliminar la barra&lt;/a&gt; y he incluido un par de maneras de redireccionar las URLs originales a las nuevas.</description>
		<content:encoded><![CDATA[<p>Publiqué ayer un post sobre <a href="http://www.posicionapro.com/blog/quitar-la-barra-final-de-las-urls.html" rel="nofollow">cómo eliminar la barra</a> y he incluido un par de maneras de redireccionar las URLs originales a las nuevas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-551</link>
		<dc:creator>Chema</dc:creator>
		<pubDate>Fri, 25 Sep 2009 01:37:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-551</guid>
		<description>Muchas gracias por todos sus consejos. Pero todavía tengo unas dudas.

He logrado poder entrar a mis archivos con la extensión php con 

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA] [nc]

pero todavia puedo entrar de las 2 maneras /archivo.php y /archivo, tendría que hacer un redirección?,</description>
		<content:encoded><![CDATA[<p>Muchas gracias por todos sus consejos. Pero todavía tengo unas dudas.</p>
<p>He logrado poder entrar a mis archivos con la extensión php con </p>
<p>RewriteEngine on<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule ^(.*)$ $1.php [L,QSA] [nc]</p>
<p>pero todavia puedo entrar de las 2 maneras /archivo.php y /archivo, tendría que hacer un redirección?,</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DavidM</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-543</link>
		<dc:creator>DavidM</dc:creator>
		<pubDate>Wed, 23 Sep 2009 10:51:03 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-543</guid>
		<description>Si no redireccionas las URLs dinámicas, pierdes el PageRank, el posicionamiento, todo.

Una URL es igual que la dirección de tu casa. Todos los meses recibo la revista &quot;SEO Today&quot; (me la he invetado). Acabo de mudarme así que mi dirección ha cambiado. No le he avisado ni a &quot;SEO Today&quot; ni a Correos. El mes que viene me enviarán la revista a mi antigua dirección. El cartero, si no sabe que ya no vivo allí, dejará la revista en mi antiguo buzón. Si lo sabe pero no sabe donde vivo, tirará la revista.

Los enlaces son las revistas. Las páginas que enlazan con las mías son los editores de revistas. Google es Correos.

Si no le dices a Google que la URL ha cambiado, al principio Google mantendrá la URL antigua en su indicé y le seguirá enviando PageRank, pero después de un par de días, si la URL le sigue dando una respuesta 404, quitará la URL de su índice, dejará de contar los enlaces entrantes a esa página y tirará el PageRank a la busara.</description>
		<content:encoded><![CDATA[<p>Si no redireccionas las URLs dinámicas, pierdes el PageRank, el posicionamiento, todo.</p>
<p>Una URL es igual que la dirección de tu casa. Todos los meses recibo la revista &#8220;SEO Today&#8221; (me la he invetado). Acabo de mudarme así que mi dirección ha cambiado. No le he avisado ni a &#8220;SEO Today&#8221; ni a Correos. El mes que viene me enviarán la revista a mi antigua dirección. El cartero, si no sabe que ya no vivo allí, dejará la revista en mi antiguo buzón. Si lo sabe pero no sabe donde vivo, tirará la revista.</p>
<p>Los enlaces son las revistas. Las páginas que enlazan con las mías son los editores de revistas. Google es Correos.</p>
<p>Si no le dices a Google que la URL ha cambiado, al principio Google mantendrá la URL antigua en su indicé y le seguirá enviando PageRank, pero después de un par de días, si la URL le sigue dando una respuesta 404, quitará la URL de su índice, dejará de contar los enlaces entrantes a esa página y tirará el PageRank a la busara.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DavidM</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-542</link>
		<dc:creator>DavidM</dc:creator>
		<pubDate>Wed, 23 Sep 2009 10:33:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-542</guid>
		<description>Sí, hay que redireccionar las dinámicas a las amigables. Se hace así:

&lt;code&gt;# .htaccess
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /mostrarrestauranteseleccionado\.php\?Id=([0-9]+)&amp;(.*)\ HTTP/
RewriteRule ^mostrarrestauranteseleccionado\.php$ /mostrarrestauranteseleccionado/%1/? [L,R=301]
# End .htaccess
&lt;/code&gt;

En tu caso, el problema es que como el valor de la variable &quot;Restaurante&quot; (Ej. Mariscos%20El%20G%FCero%20-%20Calz.%20P.%20D%EDaz) no coincide con el texto que quieres poner al final de tus URLs amigables, es imposible hacer la redirección con .htaccess.

A propósito, mentí cuando te dije que no hacía falta el .htaccess con la primera opción. Estaba apollardado. El .htaccess para la primera opción sería así:

&lt;code&gt;# .htaccess
RewriteRule ^mostrarrestauranteseleccionado/([_a-zA-Z0-9]+)/$ /mostrarrestauranteseleccionado.php?url=$1 [L]
# End .htaccess
&lt;/code&gt;

En el caso de la primera opción podrías redirigir las URLs dinámicas a las amigables con PHP de la siguiente manera:

&lt;code&gt;if (isset($_REQUEST[&#039;Id&#039;])) { // Si la URL contiene el parámetro &quot;Id&quot;...
  if (is_numeric($_REQUEST[&#039;Id&#039;])) { // Si el valor del parámetro &quot;Id&quot; es un número...
    // Sacar de la base de datos la URL amigable que corresponde al valor del parámetro &quot;Id&quot;.
    $sql = &quot;SELECT url FROM restaurantes WHERE Id={$_REQUEST[&#039;Id&#039;]}&quot;;
    $result = mysql_query($sql);
    $row = mysql_fetch_array($result);
    // Redireccionar a la URL amigable.
    header (&quot;HTTP/1.1 301 Moved Permanently&quot;);
    header (&quot;Location: mostrarrestauranteseleccionado/&quot; . $row[&#039;url&#039;] . &quot;/&quot;);
    exit ();
  }
}
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Sí, hay que redireccionar las dinámicas a las amigables. Se hace así:</p>
<p><code># .htaccess<br />
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /mostrarrestauranteseleccionado\.php\?Id=([0-9]+)&amp;(.*)\ HTTP/<br />
RewriteRule ^mostrarrestauranteseleccionado\.php$ /mostrarrestauranteseleccionado/%1/? [L,R=301]<br />
# End .htaccess<br />
</code></p>
<p>En tu caso, el problema es que como el valor de la variable &#8220;Restaurante&#8221; (Ej. Mariscos%20El%20G%FCero%20-%20Calz.%20P.%20D%EDaz) no coincide con el texto que quieres poner al final de tus URLs amigables, es imposible hacer la redirección con .htaccess.</p>
<p>A propósito, mentí cuando te dije que no hacía falta el .htaccess con la primera opción. Estaba apollardado. El .htaccess para la primera opción sería así:</p>
<p><code># .htaccess<br />
RewriteRule ^mostrarrestauranteseleccionado/([_a-zA-Z0-9]+)/$ /mostrarrestauranteseleccionado.php?url=$1 [L]<br />
# End .htaccess<br />
</code></p>
<p>En el caso de la primera opción podrías redirigir las URLs dinámicas a las amigables con PHP de la siguiente manera:</p>
<p><code>if (isset($_REQUEST['Id'])) { // Si la URL contiene el parámetro "Id"...<br />
  if (is_numeric($_REQUEST['Id'])) { // Si el valor del parámetro "Id" es un número...<br />
    // Sacar de la base de datos la URL amigable que corresponde al valor del parámetro "Id".<br />
    $sql = "SELECT url FROM restaurantes WHERE Id={$_REQUEST['Id']}";<br />
    $result = mysql_query($sql);<br />
    $row = mysql_fetch_array($result);<br />
    // Redireccionar a la URL amigable.<br />
    header ("HTTP/1.1 301 Moved Permanently");<br />
    header ("Location: mostrarrestauranteseleccionado/" . $row['url'] . "/");<br />
    exit ();<br />
  }<br />
}<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-540</link>
		<dc:creator>Chema</dc:creator>
		<pubDate>Wed, 23 Sep 2009 04:51:15 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-540</guid>
		<description>Ya pude generar un archivo un .htaccess, ahora la pregunta es, si tomo la 2da opción, que pasa con el PageRank, enlaces, backlinks, etc de las URL´s viejas???
Lo que yo entendí es que simplemente es la manera en que las muestra así que no debería afectar.

Saludos</description>
		<content:encoded><![CDATA[<p>Ya pude generar un archivo un .htaccess, ahora la pregunta es, si tomo la 2da opción, que pasa con el PageRank, enlaces, backlinks, etc de las URL´s viejas???<br />
Lo que yo entendí es que simplemente es la manera en que las muestra así que no debería afectar.</p>
<p>Saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-537</link>
		<dc:creator>Chema</dc:creator>
		<pubDate>Mon, 21 Sep 2009 14:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-537</guid>
		<description>Muchas gracias David. 

No tengo acceso a mi .htaccess asi que creo que voy a ocupar la primera opción. 
Al ocuparla la primera, no hay que redireccionar de las dinamicas a las amigables??, Y que pasa con las páginas que ya tenía indexadas??

saludos</description>
		<content:encoded><![CDATA[<p>Muchas gracias David. </p>
<p>No tengo acceso a mi .htaccess asi que creo que voy a ocupar la primera opción.<br />
Al ocuparla la primera, no hay que redireccionar de las dinamicas a las amigables??, Y que pasa con las páginas que ya tenía indexadas??</p>
<p>saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: DavidM</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-535</link>
		<dc:creator>DavidM</dc:creator>
		<pubDate>Mon, 21 Sep 2009 12:43:56 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-535</guid>
		<description>Chema, puedes hacerlo de dos maneras.

1) Guardar &quot;Restaurante_Mariscos_El_Guero&quot; en la base de datos. Por ejemplo, si tienes una tabla &quot;restaurantes&quot;, añade una columna &quot;url&quot; o algo parecido y guarda &quot;Restaurante_Mariscos_El_Guero&quot; allí.

&lt;strong&gt;$url = str_replace(&#039;/mostrarrestauranteseleccionado/&#039;, &#039;&#039;, $_SERVER[&#039;REQUEST_URI&#039;]);&lt;/strong&gt;

Luego, haces un query como &lt;strong&gt;&quot;SELECT * FROM restaurantes WHERE url=&#039;$url&#039;&quot;&lt;/strong&gt;

Básicamente dejas de usar las URLs que tenías antes y las reemplazas con las &quot;amigables&quot;. No hace falta ni htaccess ni nada.

2) Para hacerlo de la segunda manera, tendrías que cambiar un poco la estructura de tus URLs amigables. Tendrían que ser como:
/mostrarrestauranteseleccionado/252/restaurante_mariscos_el_guero/

¿Ves como he introducido el valor de la variable Id?

En este caso, puedes crear tus URLs pasando el título de la página y la variable Id por las siguientes funciones:

&lt;code&gt;$home = http://www.posicionapro.com

function _prepare_es_chars($input){
	
	$input = strtolower($input);
	
	$chars = array();
	$chars[&#039;á&#039;] = &quot;a&quot;;
	$chars[&#039;é&#039;] = &quot;e&quot;;
	$chars[&#039;í&#039;] = &quot;i&quot;;
	$chars[&#039;ó&#039;] = &quot;o&quot;;
	$chars[&#039;ú&#039;] = &quot;u&quot;;
	$chars[&#039;ñ&#039;] = &quot;n&quot;;
	$chars[&#039;ü&#039;] = &quot;u&quot;;
	
	$search = array_keys($chars);
	
	$replace = array_values($chars);
	
	return str_replace($search,$replace,$input);
	
}

function _prepare_url_text($string) {
	
	$string = strtolower(trim($string));
	
	$string = _prepare_es_chars($string);

	$NOT_acceptable_characters_regex = &#039;#[^-a-zA-Z0-9_ ]#&#039;;
	$string = preg_replace($NOT_acceptable_characters_regex, &#039;&#039;, $string);
	
	$string = preg_replace(&#039;#[-_ ]+#&#039;, &#039;_&#039;, $string); 
	
	return $string;
}

function make_restaurant_url($restaurante, $id) {

	global $home;
	
	$restaurante = _prepare_url_text($restaurante);
	
	$url = $home . &#039;/mostrarrestauranteseleccionado/&#039; . $id . &#039;/&#039; . $restaurante . &#039;/&#039;;
	
	return $url;
}

echo make_restaurant_url($nombre_del_restaurante, $_REQUEST[&#039;Id&#039;]);
&lt;/code&gt;

Ya tienes la URL. Ahora tienes que insertar un poco de código en el .htaccess para que el servidor pueda interpretarla.

&lt;code&gt;# .htaccess
RewriteRule ^mostrarrestauranteseleccionado/([0-9]+)/(.*)/ /mostrarrestauranteseleccionado.php?Id=$1
# End .htaccess&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Chema, puedes hacerlo de dos maneras.</p>
<p>1) Guardar &#8220;Restaurante_Mariscos_El_Guero&#8221; en la base de datos. Por ejemplo, si tienes una tabla &#8220;restaurantes&#8221;, añade una columna &#8220;url&#8221; o algo parecido y guarda &#8220;Restaurante_Mariscos_El_Guero&#8221; allí.</p>
<p><strong>$url = str_replace(&#8217;/mostrarrestauranteseleccionado/&#8217;, &#8221;, $_SERVER['REQUEST_URI']);</strong></p>
<p>Luego, haces un query como <strong>&#8220;SELECT * FROM restaurantes WHERE url=&#8217;$url&#8217;&#8221;</strong></p>
<p>Básicamente dejas de usar las URLs que tenías antes y las reemplazas con las &#8220;amigables&#8221;. No hace falta ni htaccess ni nada.</p>
<p>2) Para hacerlo de la segunda manera, tendrías que cambiar un poco la estructura de tus URLs amigables. Tendrían que ser como:<br />
/mostrarrestauranteseleccionado/252/restaurante_mariscos_el_guero/</p>
<p>¿Ves como he introducido el valor de la variable Id?</p>
<p>En este caso, puedes crear tus URLs pasando el título de la página y la variable Id por las siguientes funciones:</p>
<p><code>$home = <a href="http://www.posicionapro.com" rel="nofollow">http://www.posicionapro.com</a></p>
<p>function _prepare_es_chars($input){</p>
<p>	$input = strtolower($input);</p>
<p>	$chars = array();<br />
	$chars['á'] = "a";<br />
	$chars['é'] = "e";<br />
	$chars['í'] = "i";<br />
	$chars['ó'] = "o";<br />
	$chars['ú'] = "u";<br />
	$chars['ñ'] = "n";<br />
	$chars['ü'] = "u";</p>
<p>	$search = array_keys($chars);</p>
<p>	$replace = array_values($chars);</p>
<p>	return str_replace($search,$replace,$input);</p>
<p>}</p>
<p>function _prepare_url_text($string) {</p>
<p>	$string = strtolower(trim($string));</p>
<p>	$string = _prepare_es_chars($string);</p>
<p>	$NOT_acceptable_characters_regex = '#[^-a-zA-Z0-9_ ]#';<br />
	$string = preg_replace($NOT_acceptable_characters_regex, '', $string);</p>
<p>	$string = preg_replace('#[-_ ]+#', '_', $string); </p>
<p>	return $string;<br />
}</p>
<p>function make_restaurant_url($restaurante, $id) {</p>
<p>	global $home;</p>
<p>	$restaurante = _prepare_url_text($restaurante);</p>
<p>	$url = $home . '/mostrarrestauranteseleccionado/' . $id . '/' . $restaurante . '/';</p>
<p>	return $url;<br />
}</p>
<p>echo make_restaurant_url($nombre_del_restaurante, $_REQUEST['Id']);<br />
</code></p>
<p>Ya tienes la URL. Ahora tienes que insertar un poco de código en el .htaccess para que el servidor pueda interpretarla.</p>
<p><code># .htaccess<br />
RewriteRule ^mostrarrestauranteseleccionado/([0-9]+)/(.*)/ /mostrarrestauranteseleccionado.php?Id=$1<br />
# End .htaccess</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Chema</title>
		<link>http://www.posicionapro.com/blog/urls-amigables-con-mod_rewrite.html/comment-page-1#comment-533</link>
		<dc:creator>Chema</dc:creator>
		<pubDate>Sun, 20 Sep 2009 21:49:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.posicionapro.com/blog/?p=99#comment-533</guid>
		<description>Tengo un gran problema amigos, no se como hacer el cambio a URL´s amigables de estos directorios:

/mostrarrestauranteseleccionado.php?Id=252&amp;Restaurante=Mariscos%20El%20G%FCero%20-%20Calz.%20P.%20D%EDaz

deberían quedar /mostrarrestauranteseleccionado/Restaurante_Mariscos_El_Guero

saludos y muchas gracias</description>
		<content:encoded><![CDATA[<p>Tengo un gran problema amigos, no se como hacer el cambio a URL´s amigables de estos directorios:</p>
<p>/mostrarrestauranteseleccionado.php?Id=252&amp;Restaurante=Mariscos%20El%20G%FCero%20-%20Calz.%20P.%20D%EDaz</p>
<p>deberían quedar /mostrarrestauranteseleccionado/Restaurante_Mariscos_El_Guero</p>
<p>saludos y muchas gracias</p>
]]></content:encoded>
	</item>
</channel>
</rss>
