• User Attivo

    @diliberto said:

    RewriteEngine On
    RewriteRule ^([^/]+)/([^/]+).html index.php?pagina=$1&categoria=$2 Ok, fin qui ci siamo, è il più classico dei rewrite
    @diliberto said:

    passo numero 2:
    www.google.it/001/004.html
    come qualsiasi altra pagina deve farmi un redirect [301] su:
    google.it/001/004.html

    quindi scrivero' nel file .htaccess quanto segue:
    RewriteCond %{HTTP_HOST} ^www.google.it$
    RewriteRule ^(.*)$ http://google.it/$1 [R=301,L] Perfetto, ogni url richiamato col www viene dirottato sull'host senza www
    ...aspetta un momento!!
    Perchè ?

    • 'next|N' (next round)
      Re-run the rewriting process (starting again with the first rewriting rule). Here the URL to match is again not the original URL but the URL from the last rewriting rule. This corresponds to the Perl next command or the continue command from the C language. Use this flag to restart the rewriting process, i.e., to immediately go to the top of the loop.
      But be careful not to create an infinite loop!
    • 'chain|C' (chained with next rule)
      This flag chains the current rule with the next rule (which itself can be chained with the following rule, etc.). This has the following effect: if a rule matches, then processing continues as usual, i.e., the flag has no effect. If the rule does not match, then all following chained rules are skipped. For instance, use it to remove the .www'' part inside a per-directory rule set when you let an external redirect happen (where the .www'' part should not to occur!).Il Next che ci sta a fare? Perchè deve ri-eseguire il rewrite dopo il redirect?
      Quando arrivo sulla pagina google.it/001/004.html (senza WWW) viene reinterpretato htaccess (indipendentemente dal flag Next), che col rewrite mi restituisce il contenuto di google.it/index.php?pagina=001&categoria=004 ma non mi reindirizza a quest'url; o mi sbaglio?

    E il Chain? Perdonami, ma non ho tanto chiaro l'intento di questo flag.

    E poi quell'$1... ma non c'è nulla di cui fare il match nella Rewrite Rule, non è che $1 prende il match dalla regola precedente (grazie al flag )?

    Voglio dire, una regola così:

    RewriteCond %{HTTP_HOST} ^www.google.it/(.)$
    RewriteRule ^(.
    )$ http://google.it/$1 [R=301,L]

    magari spostando il NEXT alla regola di url rewriting, non va bene? Perchè?

    In ogni caso, per quale motivo devi eseguire questo troncamento del www, e soprattutto, com'è la situazione?
    Sei linkato con www? O è solo google che preferisce mostrare in serp il www in luogo dell'altro?
    Forse potrebbe aiutarti questo: http://www.giorgiotave.it/forum/google-sitemaps/14996-dominio-preferito.html
    Forse non c'entra nulla, io nel caso te lo suggerisco (anche perchè è abbastanza in topic)

    Ciao!


  • Super User

    bel topic 🙂

    pedro tu sai dirmi come fare il redirect 301 da domain.tld a www.domain.tld con wordpress, che di suo mette un .htaccess tipo questo:

    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php 
    </IfModule>
    
    # END WordPress
    
    

    te lo chiedo da assoluto GNUrante di mod_rewrite 🙂


  • Super User

    p.s. NC é
    'nocase|NC' (no case)
    This makes the Pattern case-insensitive, ignoring difference between 'A-Z' and 'a-z' when Pattern is matched against the current URL.


  • User Attivo

    @must said:

    bel topic 🙂 Concordo 🙂
    Aspetto però sempre la risposta di diliberto, la questione mi interessa e non poco!

    @must said:

    pedro tu sai dirmi come fare il redirect 301 da domain.tld a www.domain.tld con wordpress Bè, dovrebbe bastare modificare il file che crea wordpress in questo modo:

    
    # BEGIN WordPress
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . **http://www.domain.tld**/index.php **[R=301,L]**
    </IfModule>
    
    # END WordPress
    
    

    Non ho mai provato, ma a occhio dovrebbe fungere.
    A meno che l'ora tarda non mi abbia obnubilato il cervelletto; fammi sapere se funziona 🙂

    @must said:

    p.s. NC é
    'nocase|NC' (no case)
    This makes the Pattern case-insensitive, ignoring difference between 'A-Z' and 'a-z' when Pattern is matched against the current URL. Uaz allora ho cannato in pieno :eheh:

    P.s. l'ideale sarebbe studiarsi per bene la documentazione, però diverse volte, soprattutto all'inizio, questo [url=http://www.ilovejackdaniels.com/mod_rewrite_cheat_sheet.png]bigino del mod_rewrite mi ha risparmiato parecchio tempo!


  • Super User

    @petro said:

    Non ho mai provato, ma a occhio dovrebbe fungere.
    A meno che l'ora tarda non mi abbia obnubilato il cervelletto; fammi sapere se funziona 🙂

    non funziona 🙂
    se vado su www.domain.tld/post/ mi rimanda a www.domain.tld/index.php (non ho provato altri url, quindi non so come si comporta negli altri casi possibili).


  • User

    Prima di tutto perdonate la lunga attesa prima di essermi fatto risentire e soprattutto perdonate la rapidità di questo reply (petro leggerò con calma quello che mi chiedi e ne riparleremo di sicuro) ora sono di frettissima...

    Fine settimana, lontano da internet ho riflettuto sulla questione, non mi capacitavo che apache non riuscisse a gestire una situazione simile e riflettendo sul problema ho avuto una piccola illuminazione sul modus operandi che ho testato esser corretto e funzionante prima ancora di rileggere questo topic e le vostre risposte.

    La soluzione al mio quesito iniziale è molto semplice: apache interpreta in maniera lineare le istruzioni contenute al suo interno, pertanto nel caso sopracitato è sufficiente eseguire il redirect [301] prima del rewriteengine.... banalmente invertendo l' ordine delle righe di istruzioni da me postate 😉

    Cordialmente
    Alessio


  • User

    petro:
    (No Case)
    Ha detto bene must, non fa differenza fra 'A-Z' e 'a-z'.
    Non prettamente indispensabile al funzionamento dell' esempio sopracitato 😉

    must:
    prova questo, dovrebbe funzionarti per tutte le pagine non solo per la home e fammi sapere
    RewriteCond %{HTTP_HOST} ^google.it
    RewriteRule ^(.*)$ http://www.google.it/$1 [L,R=301]


  • User Attivo

    @diliberto said:

    ...che qualcuno mi smentisca....

    Cordialmente
    Alessio

    PS scrivere una regola per "ogni pagina del sito" da cui fare il redirect non è una soluzione ammissibile:)

    Ciao,

    così dovresti salvare "capre e cavoli"

    RewriteEngine On
    RewriteRule ^([^/]+)/([^/]+).html index.php?pagina=$1&categoria=$2

    RewriteCond %{HTTP_HOST} ^www.localhost.it$
    RewriteCond %{QUERY_STRING} ^$
    RewriteRule ^(.*)$ http://localhost/$1 [R=301,L]

    RewriteCond %{HTTP_HOST} ^www.localhost.it$
    RewriteCond %{QUERY_STRING} ^(.)=(.)&(.)=(.)$
    RewriteRule ^.*$ http://localhost/%2/%4.html ? [R=301,L]


  • User Attivo

    scusate se mi intrufolo nella discussione ma volevo chiedervi come è possibile (se lo è) calcolare il "superlavoro" dovuto all'uso di .htaccess.
    si insomma è una manna dal cielo per i motori ma per il server (in hosting!) di un sito affollato credo di no, o sbaglio??


  • User Attivo

    @piccolosocrate said:

    scusate se mi intrufolo nella discussione ma volevo chiedervi come è possibile (se lo è) calcolare il "superlavoro" dovuto all'uso di .htaccess.
    si insomma è una manna dal cielo per i motori ma per il server (in hosting!) di un sito affollato credo di no, o sbaglio??

    Apache ha a disposizione un utile strumento di benchmark
    http://httpd.apache.org/docs/2.0/programs/ab.html

    con cui è possibile "stressare" il sito

    Ovviamente la situazione ideale per siti molto molto frequentati, specialmente se realizzati con cms complessi come Typo3, è comunque inserire le configurazioni che normalmente inseriremmo in .htaccess direttamente in httpd.conf e settare AllowOverride None (prestando attenzione alle differenze di sintassi e di funzionamento per quanto riguarda mod_rewrite)

    Teni comunque presente che il parsing di qualsiasi file php (in assenza di un sistema di caching del bytecode) generalmente comporta un overhead maggiore del parsing di .htaccess


  • User Attivo

    @fheller said:

    Apache ha a disposizione un utile strumento di benchmark
    http://httpd.apache.org/docs/2.0/programs/ab.html

    con cui è possibile "stressare" il sito

    Ovviamente la situazione ideale per siti molto molto frequentati, specialmente se realizzati con cms complessi come Typo3, è comunque inserire le configurazioni che normalmente inseriremmo in .htaccess direttamente in httpd.conf e settare AllowOverride None (prestando attenzione alle differenze di sintassi e di funzionamento per quanto riguarda mod_rewrite)

    Teni comunque presente che il parsing di qualsiasi file php (in assenza di un sistema di caching del bytecode) generalmente comporta un overhead maggiore del parsing di .htaccess
    quindi pesa più un php che un htaccess!
    corpo di mille balene!