Problema con URL amigable

Ok. Hice las pruebas que me dijiste.
Estos son los resultados:

*<form action="/detalle" method="get" name="detalle">
*RewriteRule ^(.+)-(.+)$ localhost/content/detalle?nombre=$1&id=$2

Cuando hago clic en el botón "detalle" del fomulario (regaleria.php) y me voy a detalle.php:
*Sí aparece los datos "nombre" e "id" del producto, con su CSS, solo con esta URL: "http://localhost/detalle?nombre=portasahumerio&id=4"

Fui a Consola y me dice esto:

ReferenceError: jQuery is not defined generales.js:4
SyntaxError: syntax error jquery-1.11.min.js:6
Ya, lo que ocurre es que la estructura está equivocada. Lo que debes hacer es:

- Redirigir todo al index.php y que este se encargue de distribuir el contenido donde corresponda o,
- Utilizar siempre la regla .* index.php [L, en lugar de la que hemos estado discutiendo.

¿Por qué no funciona con una regla y con la otra sí?

La regla .* index.php redirige todo al index.php, por lo que este carga template.php, que contiene el css y estructura del documento, la clase Helper, etc. y se encarga de modificar el contenido.

Con la regla ^(.+)/(.+)$ content/detalle?... estás redirigiendo directamente al archivo detalle.php, por lo que se salta la estructura del documento, la clase Helper, etc., por lo que no aparece nada.

Solución

Redirige todo al index.php, creando varias reglas dependiendo de lo que busques. Por ejemplo:

Productos
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^producto/(.+)-(.+)$ index.php?nombre=$1&id=$2 [L,QSA] # Añade la consulta, por si la necesitas en algún lugar.
RewriteRule . /index.php [L]
</IfModule>

Ahora tu index.php debería encargarse de redirigir el contenido donde corresponda. En lugar de detalle, tal vez podrías nombrar el archivo como producto, de esta forma podrías incluir el contenido basándote en otra regla y el nombre del archivo:

RewriteRule ^(.+)/(.+)-(.+)$ index.php?request=$1&nombre=$2&id=$3 [L,QSA]

Luego, en PHP:

  $request = isset( $_GET['request'] ) ? $_GET['request'] : '';

  if( $request ) {
    include_once 'ruta/archivo/' . $_GET['request'];
  }

No es tan fácil trabajar con URLs amigables, jejeje.

Espero que ahora sí te haya ayudado :P.
Muchas gracias Skaparate, por el consejo y los datos de códigos! Voy a estudiar lo que me aconsejas.[:)]
Estaré en contacto en este maravilloso sitio y agradecido de la amabilidad que me ofreciste!
El error que muestras hace referencia a la variable $conexion, la que no se muestra en la línea 26. De todas formas, esto significa que no se incluyó el archivo donde tienes esta variable.

Sobre la regla, está bien, pero el número debe ser opcional:

RewriteRule ^regaleria(/pagina-(\d+))?$ index.php?regaleria&num=$2 [L,QSA]

De esta forma sólo se cumple la regla si se ingresa regalaria/pagina-número, mientras que antes podía ingresar regalaria/pagina-a, regalaria/pagina-b, regalaria/pagina-, etc.
Skaparate gracias por contestarme!

SOLUCIÓN:
Te comento que listo, sí, eliminando la variable $conexion de la línea 26 se pudo corregir la carga de imágenes y el paginador, o sea toda la BD (ahora que recuerdo yo le había agregado esa variable para hacer pruebas, pero me había olvidado de sacarla).

PROBLEMA:
El problema persiste parecido al proyecto inicial:

.Por ejemplo, cuando se clickea el botón 2 del paginador muestra en la URL: "http://localhost/regaleria?num=2", con su correspondiente carga de archivos.
.Modifiqué el HTACCES con tu código pero cuando intento ingresar con la URL amigable aún no funciona.

ACLARACION:
.Probablemente haya un conflicto con la extensión del archivo, es decir, en la URL no tiene ".php" = "http://localhost/regaleria?num=2", porque ya hay una URL amigable que es "localhost/regaleria".
.Si comparo el arreglo que me pasaste en el "index.php", digamos, en el caso de la página 2: "Array ( => => 2 )", ese resultado es el mismo tanto para cuando escribo la URL amigable (y no aparece ninguna imagen) o para la URL que no lo es.

ARCHIVO DEL SITIO COMPLETO CON EL PAGINADOR Y BD:
https://mega.co.nz/#!fsQgTB7C!4qpIaaHYC2XbOpXxvOFi1dEM-qCsnR7dleQN_…

Disculpame Skaparate la insistencia.
Yo modifiqué lo siguiente:

.htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^detalle/(.+)/(.+)$ index.php?r=detalle&nombre=$1&id=$2 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^regaleria(/pagina-(\d+))?$ index.php?[COLOR="#FF0000"]r=regaleria[/COLOR]&num=$1 [L,QSA]
RewriteRule ^regaleria(/pagina-(\d+))?$ index.php?[COLOR="#FF0000"]r=regaleria[/COLOR]&num=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L,QSA]
</IfModule>

Debe existir una forma más sencilla para resumir todas las redirecciones, pero no soy experto en mod_rewrite, así que no sé cómo :P.

Espero te sirva, saludos!
Hola Skaparate. Estuve probando con este código:

RewriteRule ^producto/(.+)/(.+)$ producto?nombre=$1&id=$2 [L,R=301,QSA]

SOLUCION: Ya no hay duplicado.

PROBLEMA: Convertir esta redirección en URL amigable.

Esto es lo que pasa:
Cuando hago clic en el formulario y pasa a la siguiente página, en la URL, aparece:
"http://localhost/producto?nombre=miProducto4&id=4".
Cuando escribo la URL amigable, por ejemplo:
"http://localhost/producto/miProducto4/4", me redirecciona automáticamente con:
"http://localhost/producto?nombre=miProducto4&id=4".

¿Se podrá corregir esto para hacerlo amigable? O mejor sigo intentando como veníamos haciendo...