Creo que esto te vald
Insertar CODE, HTML o PHP:
RewriteEngine On #Activa el mod_rewrite que es con lo que se va a conseguir llevar a cabo todo
RewriteCond %{SCRIPT_FILENAME} !-d #Se comprueba que no existe una carpeta con el nombre solicitado
RewriteCond %{SCRIPT_FILENAME} !-f #Se comprueba que no existe un archivo con el nombre solicitado
Rewriterule ^categoria/([0-9]+)/?$ categoria.php?idcat=$1 [L,QSA] #Y entonces es cuando se lleva a cabo la magia :D
Lo importante es Rewriterule, esto establece que si se pide una URL con el formato descrito, se puede redirigir/transformar la petición internamente a otro sitio, de forma que al solicitar /categoria/1 pues haga que en realidad se procese como categoria.php?idcat=1
Rewriterule tiene 2 partes importantes: regla y destino
Te describo que hace la regla anterior:
^categoria/ Indica que la URL solicitada tiene que comenzar por 'categoria/'
([0-9]+) Indica que tiene que aparecer una secuencia de números, y que este entre paréntesis sirve para indicar/usarlo como parámetro.
/?$ Indica que la URL puede o no terminar en una /
Y ahora el destino, lo único a entender es el $1, eso hace referencia al primer parámetro que marcamos con paréntesis en la regla.
Si en la regla hubiese varias partes entre paréntesis, pues en el destino podríamos usarlos con $1, $2 ..... $n
[L,QSA] No es realmente necesario.
L significa que si esa regla se cumple, no se siga procesando otras reglas.
QSA significa que si la URL amigable tiene parámetros, estos se copien a la URL destino, ejemplo:
/categoria/1?ordenar=precio se traduce en categoria.php?idcat=1&ordenar=precio
Hay muchas guías sobre URLs amigables, si tienes dudas de como usarlas estoy seguro que puedes encontrar algo completo buscando un segundo en Google.
PD: no he probado la regla, así que si no funciona quizás es porque se me pasó algún detalle.
Ten en cuenta también que tu hosting debe disponer del mod_rewrite de Apache activo.