No conozco motivo por el cual IE trabaje distinto al resto. habría que verlo funcionando. De todas maneras tu esquema no creo que sea el ideal.
Primero habría que aclarar un punto.
La carpeta "shop" existe? o es un prefijo que querés sumar a la url?
El uso de RewriteBase, no se justifica a menos que "shop" sea un alias de apache, o que sea una carpeta por fuera de tu documentRoot (un caso muy común es el de los subdominios que no comparten la raíz de tu sitio principal)
Aqui lo importante es que tus php reciban correctamente los parámetros.
Voy a suponer que tu carpeta shop existe y que index.php y detalles.php estan en la misma
Entonces, tu .htaccess quedaría
Código Apache:
Ver originalOptions +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^shop/categoria/(.*)$ /shop/index.php?categoria=$1 [L]
RewriteRule ^shop/camiseta/([0-9]+)-(.*)$ /shop/detalle.php?id=$1 [L]
Y el formato de los posibles links en tu html
Código HTML:
Ver original<a href="/shop/camiseta/14-descripcion">/shop/camiseta/14-descripcion
</a><br /> <a href="/shop/camiseta/17-talles">/shop/camiseta/17-talles
</a><br /> <a href="/shop/categoria/23">/shop/categoria/23
</a><br /> <a href="/shop/categoria/ropa">/shop/categoria/ropa
</a>
Si shop no existiese, y solo queréa "adornar" la url, estando index.php y detalle.php en la raiz de tu web, usas en las reglas
Código Apache:
Ver originalRewriteRule ^shop/categoria/(.*)$ /index.php?categoria=$1 [L]
RewriteRule ^shop/camiseta/([0-9]+)-(.*)$ /detalle.php?id=$1 [L]
Es decir, removés shop de las páginas de destino. El formato de los links, no varía
Saludos