/public_html è una cartella che si trova sui server Windows normalemente non sui server Apache quindi se sei su un server Windows con ISS le direttive contenute in .htaccess vengono completamente ignorate. Se sei su un server Linux invece dovresti modificare la direttiva così:
RewriteCond %{HTTP_HOST} !^/public_html [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/public_html/$1 [R=301,L]
La storiella poi della cartella con i file pubblici e quella degli script da proteggere è in realtà una cosa che si usa raramente e in casi eccezzionali. Normalmente sui server linux gli script da proteggere si proteggono intervenendo sui permessi o tramite PHP direttamente.
Per esempio poi proteggere una cartella pubblica sul server sempre con .htaccess e .htpasswd chiedendo utente e password per accedere. Poi inserire un codice PHP che verifica se il file con lo script è aperto per inclusione nel file index.php o altro e non chiamato direttamente dall'utente. Puoi proteggere l'esecuzione dietro una sessione di login, le soluzioni sono molte.
Solo raramente e per motivi particolari si possono usare cartelle esterne a quella pubblica, per esempio VirtualMart 2.X utilizza una cartella non raggiugibile da internet per salvare dei file, ma software di ecommerce più evoluti come PrestaShop non utilizzano questa soluzione dettata più da aver rammendato velocemente qualche bug di sicurezza che non da una reale necessità.

Rispondi quotando