Pravidlá robia to, že keď si klient vyžiada súbor alebo adresár, ktorý na serveri neexistuje, o zobrazenie stránky sa postará /index.php. Keďže adresár shop existuje, tak sa toto pravidlo nevykoná.
Keď si klient vypýta adresár /shop/, mal by sa (pri štandardnom nastavení servera) vyhľadať súbor index.php, čiže by to malo správne zobraziť /shop/index.php. Keďže to nezobrazuje, tak je buď inak nastavený server alebo existuje súbor /.htaccess, ktorý prepisuje url inak.
O to, že sa v prípade prístupu k /shop/ zobrazí "Nenalezeno", sa stará stránka, ktorá obsluhuje chybu 404. O ostatné stránky sa stará index.php, ktoré napíše "Litujeme, ale Vašemu zadání neodpovídá žádný příspěvek.".
Môžeš ešte zmeniť tie pravidlá, ale lepšie by bolo zistiť, prečo to nefunguje tým prvým spôsobom:
RewriteEngine On
RewriteBase /
RewriteRule ^shop/$. shop/index.php [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]