Eh ma continui a togliere il RewriteBase
Ma soprattutto non dici dentro QUALE cartella hai metto il .htaccess...
Allora, segui alla lettera questa soluzione (se cambi qualcosa e non ti funziona indica cosa hai cambiato):
1) da pannello altervista, vai nella tua cartella /site1/
2) clicca sulle "rotelle" di questa cartella site1 e aggiungi questo preciso .htaccess:
RewriteEngine on
RewriteBase /site1/
RewriteCond %{REQUEST_URI} !/index\.php.*
RewriteRule ^(.*)$ index.php?page=$1
la RewriteCond è essenziale in questo caso, e serve ad evitare il rewrite nel caso si tratti della index.php stessa, che creerebbe un doppio richiamo del rewrite.. in parole povere ti ritrovi con index.php che si passa da solo come parametro page=index.php e non è quel che vuoi ovviamente.
A questo punto hai già più o meno risolto.
Ma mi sembra di aver capito che rimanevi perplesso per il fatto che l'url non cambiava nella barra dell'indirizzo (ho capito bene?)
ma NON deve cambiare! il mod_rewrite serve proprio a questo, cioè a mostrare l'url che è stato richiesto ma sotto sotto (lato server) andare a richiamare qualche altro script o risorsa diversi.
3) Per sincerarti di questo basta che nella pagina index.php da qualche parte ti scrivi a video queste righe php:
Codice PHP:
<?= $_SERVER['REQUEST_URI'] ?>
<br />
<?= $_SERVER['SCRIPT_NAME']."?".$_SERVER['QUERY_STRING'] ?>
Se chiedi il link tuosito/site1/ciccio.php
apparirà:
/site1/ciccio.php
/site1/index.php?page=ciccio.php
Un esempio "live" puoi vederlo temporaneamente qui:
http://heracleum.altervista.org/help/ciccio.php
/help/ sta alla tua /site1/, ciccio.php ovviamente non esiste è un esempio di come viene passato il parametro page alla index. E in fondo alla pagina puoi leggere il risultato dei due url prima/dopo.
L'url nella barra di indirizzo dunque non cambia.. A MENO CHE non forzi un redirect tramite il flag [R] che potresti aggiungere a fine riga del rewriterule.
Al momento rimane solo in sospeso il trasporto dei parametri in querystring durante la riscrittura... ora è un po' tardi.. comunque già un passo avanti è indicare sempre tramite flag della rewriterule che vuoi appendere (accodare) i parametri in querystring alla nuova querystring ( ?page=xxx)
Il flag è [QSA] (query string append) sempre da inserire in fondo alla riga, così:
RewriteRule ^(.*)$ index.php?page=$1 [QSA]
(se vuoi entrambi i flag usi la virgola: [R,QSA] )
Solo che index.php dovrebbe anche occuparsi di trasportare a sua volta tutti i parametri in request (tranne page ovviamente) alla pagina che deve trattare.
Se qualcuno ha una soluzione più brillante...
ciao