• User Newbie

    mod_rewrite per eseguire sempre lo stesso script main

    Buona sera ai presenti,
    mi sono appena registrata al sito per porre un quesito da neofita non essendo proprio espertissima nella programmazione con PHP e con Apache e per capire se il mod_rewrite, che ho scoperto essere utilizzatissimo, può fare anche al caso mio.

    Supponiamo che nel mio sito ho una determinata cartella con diversi script php:
    es. miosito.it/miacartella/scriptmain.php,script1.php,script2.php,script3.php etc..(nessun index.php)
    Se da browser digito l'url miosito.it/miacartella/ mi dà correttamente l'errore 403 Forbidden (You don't have permission to access /webrest/ on this server).
    Se invece digito l'url completo conoscendo il nome di uno degli script, es. miosito.it/miacartella/script2.php, lo script in questione viene eseguito.(E' quello che vorrei evitare).
    Come posso fare affinchè digitando il nome di uno degli script presenti, apache mi rimandi sempre allo scriptmain.php?
    E' possibile con una regola del modulo mod_rewrite?
    Una volta impostata tale regola, quando viene eseguito lo scriptmain.php, il quale poi include nel codice lo script1.php, script2.php, script3.php, ho dei problemi oppure No?


  • Moderatore

    Ciao haiti e benvenuta sul Forum GT.

    Se ad esempio avessi questo scriptmain.php:

    
    <?php
    echo "Somma: ";
    include("script1.php");
    echo "<br />Differenza: ";
    include("script2.php");
    echo "<br />Prodotto: ";
    include("script3.php");
    ?>
    
    

    che richiama 3 script collocati nella stessa directory di scriptmain.php, chiamiamola dirscript, potresti inserire questa riga nell'htaccess per eseguire un redirect 301 solo se l'url è quello esatto di uno dei tre script:

    
    RedirectMatch 301 /dirscript/(?!scriptmain)(script1|script2|script3)\.php http://tuodominio/dirscript/scriptmain.php
    
    

    Se invece vuoi redirezionare a scriptmain.php qualsiasi url della directory dirscript, allora la riga da inserire è questa:

    
    RedirectMatch 301 /dirscript/(?!scriptmain\.php)(.*) http://tuodominio/dirscript/scriptmain.php
    
    

    In entrambi i casi *tuodominio *include eventualmente il www e anche l'estensione (com, it, org, ecc..).

    Spero di esserti stato utile. :smile5:

    Francesco