• User

    Il mod_rewrite mi crea una sottodirectory e perdo lo stile pagina

    Ciao a tutti.
    Preannuncio che sono un nubbio per quanto riguarda il php...sto cercando di imparare...
    Dunque, sto usando CuteNews per l'inserimento delle news sul mio sito, tutto funziona come desidero (o quasi) e mi stavo accingendo a cercare un modo di effettuare il mod_rewrite per avere URL "migliori".
    Ho trovato un hack di Cutenews che pare funzionare, ma....

    Allora:
    la pagina nella quale vengono mostrate le news ha il seguente URL:
    miosito.com/news/news.php

    come da hack CuteNews ho inserito, prima del comando "include" il seguente codice:

    #############################
    //Mod_rewrite
    ob_start();
    //Mod_rewrite
    #############################

    e dopo il comando "include" questo:

    #############################

    //Mod_rewrite
    $show_news = ob_get_contents();
    ob_get_clean();

    $script_file = end($script_url = explode("/", $HTTP_SERVER_VARS['SCRIPT_NAME']));
    $path = substr($HTTP_SERVER_VARS['SCRIPT_NAME'], 0, -strlen($script_file));

    $find = array( /post/ "#".$script_file."?subaction=showfull&id=(.?)&archive=&start_from=&ucat=(.?)&#i",
    /postcomments/ "#".$script_file."?subaction=showcomments&id=(.?)&archive=&start_from=&ucat=(.?)&#i",
    /postpage/ "#".$script_file."?start_from=(.?)&ucat=&archive=&subaction=&id=&#i",
    /archiveindex/ "#".$script_file."?archive=(.
    ?)&subaction=list-archive&#i",
    /archive/ "#".$script_file."?subaction=showfull&id=(.?)&archive=(.?)&start_from=&ucat=&#i",
    /archivepage/ "#".$script_file."?start_from=(.?)&ucat=&archive=(.?)&subaction=list-archive&id=&#i",
    /archivecomments/ "#".$script_file."?subaction=showcomments&id=(.?)&archive=(.?)&start_from=&ucat=(.)&#",
    /searchnews/ "#".$script_file."?misc=search&subaction=showfull&id=(.
    ?)&archive=&cnshow=news&ucat=(.?)&start_from=#",
    /searcharchives/ "#".$script_file."?misc=search&subaction=showfull&id=(.
    ?)&archive=(.?)&cnshow=news&ucat=(.?)&start_from=#",
    /ncommentspage/ "#".$script_file."?comm_start_from=(.?)&archive=&subaction=showcomments&id=(.?)&ucat=(.?)&#",
    /acommentspage/ "#".$script_file."?comm_start_from=(.
    ?)&archive=(.?)&subaction=showcomments&id=(.?)&ucat=(.*?)&#",
    );

    $replace = array( "post/\1-\2.html&",
    "postcomments/\1-\2.html&",
    "postpage/\1.html&",
    "archiveindex/\1.html&",
    "archive/\1/\2.html&",
    "archivepage/\2/\1.html&",
    "archivecomments/\1/\2.html&",
    "searchnews/\1/\2",
    "searcharchives/\1/\2",
    "ncommentspage/\1/\2-\3.html&",
    "acommentspage/\1/\2/\3.html&",
    );

    $show_news = preg_replace($find,$replace,$show_news);

    if(!file_exists('.htaccess')){
    $htaccess = "RewriteEngine On\n";
    $htaccess .= "RewriteBase ".$path."\n\n";
    $htaccess .= "RewriteRule ^post/([0-9])-(.).html(.)$ ".$script_file."?subaction=showfull&id=$1&ucat=$2$3 [L,NC]\n";
    $htaccess .= "RewriteRule ^postcomments/([0-9]
    )-(.).html(.)$ ".$script_file."?subaction=showcomments&id=$1&ucat=$2$3 [L,NC]\n";
    $htaccess .= "RewriteRule ^postpage/(.).html(.)$ ".$script_file."?start_from=$1$2 [L,NC]\n\n";
    $htaccess .= "RewriteRule ^archiveindex/(.).html(.)$ ".$script_file."?archive=$1&subaction=list-archive$2 [L,NC]\n";
    $htaccess .= "RewriteRule ^archive/([0-9])/(.).html(.)$ ".$script_file."?subaction=showfull&id=$1&archive=$2$3 [L,NC]\n";
    $htaccess .= "RewriteRule ^archivepage/(.
    )/(.).html(.)$ ".$script_file."?start_from=$2&archive=$1&subaction=list-archive$3 [L,NC]\n";
    $htaccess .= "RewriteRule ^archivecomments/(.)/(.).html(.)$ ".$script_file."?subaction=showcomments&id=$1&archive=$2$3 [L,NC]\n\n";
    $htaccess .= "RewriteRule ^searchnews/([0-9]
    )/(.)$ ".$script_file."?misc=search&subaction=showfull&id=$1&ucat=$2&cnshow=news& [L,NC]\n";
    $htaccess .= "RewriteRule ^searcharchives/([0-9]
    )/(.)$ ".$script_file."?misc=search&subaction=showfull&id=$1&archive=$2&cnshow=news& [L,NC]\n\n";
    $htaccess .= "RewriteRule ^ncommentspage/(.
    )/(.)-(.).html(.)$ ".$script_file."?comm_start_from=$1&archive=&subaction=showcomments&id=$2&ucat=$3$4 [L,NC]\n";
    $htaccess .= "RewriteRule ^acommentspage/(.
    )/(.)/(.).html(.*)$ ".$script_file."?comm_start_from=$1&archive=$2&subaction=showcomments&id=$3$4 [L,NC]";

    $file = fopen(".htaccess", "w");
    fwrite($file, $htaccess);
    fclose($file);
    }

    echo $show_news;
    //Mod_rewrite

    ######################################

    Senza il mod_rewrite, cliccando sui commenti della singola news visualizzata, mi si apre una pagina nella quale viene viesulaizzata la news, i commenti ed il form per l'inserimento degli stessi con URL:

    miosito.com/news/news.php?subaction=showcomments&id=1328802658&archive=&start_from=&ucat=4&

    con il mod_rewrite invece, l'URL viene trasformato in:
    miosito.com/news/postcomments/1328802658-4.html&

    la pagina viene visualizzata, ma la creazione della nuova sottodirectory "postcomments" impedisce la corretta visualizzazione della stessa (si perde il percorso relativo del file .css).

    Da nubbio in cerca di risposte ho provato a mettere le mani nel codice del mod_rewrite ed ho provato ad eliminare tutte le istruzioni relative a "postcomments" ed ho ottenuto, cliccando sul link che porta alla pagina dei commenti, una pagina con URL:

    miosito.com/news/1328802658-4.html&

    che mi restituisce però un errore 404.

    Qualcuno è in grado di aiutarmi a risolvere il problema?

    Grazie mille

    Matteo