• User Newbie

    Mod rewrite per pagina personale utenti

    Ciao ragazzi vorrei fare in modo che nel mio sito gli utenti abbiano una propria pagina personale del tipo nomesito/nickname

    Ho impostato la seguente regola nel file htaccess:
    RewriteRule ^(.*) mypage.php?id=$1

    Usando questa sintassi, adesso tutti link ad altre pagine su cui clicco, mi fanno un redrect alla pagina mypage.php.

    Presumo che il problema sia che adesso ogni pagina risponde ai requisiti della rewriterule che ho inserito; come posso fare per ovviare al problema?

    Considerate che questa pagina sarà l'unica ad avere un indirizzo di questo tipo , per le altre pagine non avrò problemi a scrivere per esempio : nomesito/articoli/1234.

    Posso forse modificare l'espressione e dire che vale se esiste solo una '/'; se sì qual'è la sintassi corretta?

    Per quanto riguarda i css forse non vengono più caricati perchè hanno un percorso relativo, devo per forza dargli un percorso assoluto? (senza la rewriterule funziona tutto perfettamente)

    grazie in anticipo


  • ModSenior

    Con la regola che hai fatto è ovvio sia quello il comportamento.

    RewriteRule ^(.*)
    ti fa puntare tutte le pagine a mypage

    puoi usare una cosa del tipo

    RewriteRule ^mypage-(.*) mypage.php?id=$1

    e scrivendo mypage- qualcosa ti punta a quella pagina


  • User Newbie

    @Thedarkita said:

    Con la regola che hai fatto è ovvio sia quello il comportamento.

    RewriteRule ^(.*)
    ti fa puntare tutte le pagine a mypage

    puoi usare una cosa del tipo

    RewriteRule ^mypage-(.*) mypage.php?id=$1

    e scrivendo mypage- qualcosa ti punta a quella pagina

    Ti ringrazio per la risposta, ma era proprio quello che volevo evitare, ci sarà pure un modo per non dover per forza indicare un qualcosa per puntare ad una determinata pagina.
    Vorrei fare come fa myspace
    Considera che quella pagina è l'unica che vorrei usare con la rewrite rule, le altre possono avere il solito url dinamico

    grazie 1000 per la risposta

    :smile5:


  • ModSenior

    Puoi usare le condizioni, cioè se il file che richiedi non c'è punta a quella pagina.

    Chiedi ad un mod di spostarti nella sezione giusta che qualcuno che risponde lo trovi


  • User Newbie

    @Thedarkita said:

    Puoi usare le condizioni, cioè se il file che richiedi non c'è punta a quella pagina.

    Chiedi ad un mod di spostarti nella sezione giusta che qualcuno che risponde lo trovi

    ok ho inviato un messaggio ad un moderatore, grazie

    :smile5:


  • User Newbie

    @Thedarkita said:

    Puoi usare le condizioni, cioè se il file che richiedi non c'è punta a quella pagina.

    Chiedi ad un mod di spostarti nella sezione giusta che qualcuno che risponde lo trovi

    Scusa se ti rompo ancora, ho trovato un esempio su internet che mi sembra funzionare:

    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteRule ^([^/]+)/?$ /mypage.php?id=$1 [QSA,L]

    Spero che qualcuno poi mi possa spiegare se è corretto e cosa vuole dire e se questo mi permette quindi di applicare altre regole ad altre pagine.

    grazie


  • User Attivo

    Puoi fare così:

    sito/nickname.nick

    o sbizarrirti come vuoi :D, esempio: sito/Jeeves.nick, sito/Jeeves.html o sito/Jeeves.quello-che-vuoi

    Ti posto l'.htaccess per fare sito/nick.html

    [php]RewriteRule ^(.*).html$ mypage.php?id=$1[/php]

    :gthi:


  • User Attivo

    @Jeeves said:

    Puoi fare così:

    sito/nickname.nick

    o sbizarrirti come vuoi :D, esempio: sito/Jeeves.nick, sito/Jeeves.html o sito/Jeeves.quello-che-vuoi

    Ti posto l'.htaccess per fare sito/nick.html

    [php]RewriteRule ^(.*).html$ mypage.php?id=$1[/php]

    :gthi:

    Scusa, ma così facendo non rischia di creare una regola un pò ambigua?

    Teoricamente anche index.html viene interpretata dal server come mypage?id=index

    Non sarebbe meglio creare una roba del tipo

    [php]RewriteRule ^profilo/([^/]+).html$ mypage.php?id=$1[/php]
    scusa se sbaglio;)


  • User Attivo

    Si infatti hai ragione 😉

    Meglio profilo/Jeeves.html, questa è la regola:

    [php]RewriteRule ^profilo/([^/]+).html$ mypage.php?id=$1[/php]

    Bisogna effettuare l'escape a .html 😉

    :gthi: