Con i redirect non si va a tentativi: bisogna capire bene qual è la vecchia url e quale la nuova url, però bisogna anche prevenire una serie di errori verificabili. Mi chiedi un esempio, ma il Web è pieno di guide, di forum e di post che affrontano problemi specifici e che aiutano a risolverli. Dipende da che cosa vuoi tu, e finora sei stato generico, né puoi e vuoi fornire un link vecchio e un link nuovo perché disponibili in area riservata.
Torniamo al problema. Se chi non è loggato deve raggiungere la pagina "Listino" con le istruzioni per la registrazione, in teoria il redirect sarebbe il seguente (a fine riga scrivo "302" perché il redirect è in fase di sperimentazione; quando diventerà definitivo trasformerai "302" in "301"):
RewriteRule ^/prodotto.html /listino.html [R=302,L]
Questo è un esempio di riga da inserire in htaccess, ma a determinate condizioni: se commetti un solo errore l'intero sito ti restituirà un codice di errore 500 fino a quando non avrai risolto il problema; in assenza di errori formali non visualizzerai l'errore 500, ma potresti ottenere effetti imprevisti (di cui si accorge l'utente a tua insaputa). Il problema sta proprio nel fatto che devi vagliare attentamente ciò che stai chiedendo al sistema, quindi ragionare ragionare ragionare.
La riga di esempio, infatti, funzionerà per chi non è loggato, ma anche per chi è loggato, sicché rischi di compromettere la navigazione degli utenti già registrati (ogni volta che cliccheranno su un prodotto verranno riportati sempre al Listino).
In definitiva, un esempio generico non serve a niente.
Per evitare errori di reindirizzamento in assenza di riscrittura condizionale, ti consiglierei di creare due diverse pagine "Listino": chi non è loggato vede la pagina "listino-1.html" (con le istruzioni per il login), chi è loggato vede la pagina "listino-2.html" (completa della lista dei prodotti). Dovresti partire da una riga simile a questa:
RewriteRule ^/?component/users/login.html /directory/listino-1.html [R=302,L]
che può anche essere
RewriteRule ^/?component/users/login /directory/listino-1.html [R=302,L]
P.S. Nei redirect con htaccess il punto di domanda ha una funzione diversa a seconda di dove lo si mette. Se usata a caso produce errori nel redirect, come sembra capiti a te. Dopo "login" ho tolto il punto interrogativo e la query per semplificare. Per le query è preferibile usare RewriteCond, ma la questione si complica.