2011-04-30 16 views
23

Non riesco a convertire le regole htaccess in riscrittura nginx. Ho controllato la documentazione di NginxRewriteModule e ne ho fatte alcune, ma le più complicate per cui sono in difficoltà. Ecco quello che sto guardando:convertire htaccess in nginx

RewriteRule ^$            /cgi-bin/index.cgi [L] 
RewriteRule ([0-9A-Za-z]{12})-del-([0-9A-Za-z]+)/.+$   /cgi-bin/index.cgi?del=$1-$2 [L] 

RewriteCond  %{REQUEST_FILENAME} !-f 

RewriteRule ^([0-9A-Za-z]{12})(\.html?|$)$     /cgi-bin/index.cgi?op=download1&id=$1 [L] 
RewriteRule ^([0-9A-Za-z]{12})(\/.+|\.html?|$)    /cgi-bin/index.cgi?op=download1&id=$1&fname=$2 [L] 
RewriteRule ^([0-9A-Za-z\-_]{4,64})/([0-9A-Za-z]{12})$ /cgi-bin/index.cgi?op=download1&usr_login=$1&id=$2 [L] 
RewriteRule ^([0-9A-Za-z\-_]{4,64})/([0-9A-Za-z]{12})(\/.+|\.html?|$)  /cgi-bin/index.cgi?op=download1&usr_login=$1&id=$2&fname=$3 [L] 

#RewriteRule ^Reseller\.html$           /cgi-bin/Templates/Pages/english/Reseller.html [L] 
RewriteRule ^checkfiles\.html$          /cgi-bin/index.cgi?op=checkfiles [L] 
RewriteRule ^contact\.html$           /cgi-bin/index.cgi?op=contact [L] 
RewriteRule ^premium\.html$           /cgi-bin/index.cgi?op=payments [L] 
RewriteRule ^login\.html$           /cgi-bin/index.cgi?op=login [L] 
RewriteRule ^catalogue(.*)\.html$         /cgi-bin/index.cgi?op=catalogue&date=$1 [L] 
RewriteRule ^news([0-9]*)\.html$          /cgi-bin/index.cgi?op=news&page=$1 [L] 
RewriteRule ^n([0-9]+)-.*\.html$          /cgi-bin/index.cgi?op=news_details&news_id=$1 [L] 
RewriteRule ^free([0-9]+)\.html$      /cgi-bin/index.cgi?op=registration&aff_id=$1 [L] 
RewriteRule ^users/([0-9A-Za-z\-_]{4,64})/?([0-9]+|$)  /cgi-bin/index.cgi?op=user_public&usr_login=$1&fld_id=$2 [L,NC] 
RewriteRule ^embedmp3-([0-9A-Za-z]{12})\.html$ /cgi-bin/index.cgi?op=mp3_embed&file_code=$1 [L] 
RewriteRule ^embedmp4-([0-9A-Za-z]{12})\.html$ /cgi-bin/index.cgi?op=mp32_embed&file_code=$1 [L] 
RewriteRule ^box$         /cgi-bin/index_box.cgi [L] 

RewriteCond  %{REQUEST_FILENAME} !-f 
RewriteCond  %{REQUEST_FILENAME} !-d 
RewriteRule ^([0-9A-Za-z\-_]{4,64})(/[^\/]*/?|$)$   /cgi-bin/index.cgi?op=user_public&usr_login=$1&fld=$2 [L,NC] 

RewriteCond  %{REQUEST_FILENAME} !-f 
RewriteRule ^([a-z0-9\-\_]+).html(.*)      /cgi-bin/index.cgi?op=page&tmpl=$1$2 [L] 
+0

Meglio per http://serverfault.com/ o http://webmasters.stackexchange.com/. –

risposta

33

Strumenti online per tradurre Apache .htaccess a strumenti di riscrittura Nginx includono:

Si noti che questi strumenti verrà convertito a equivalenti rewrite expressions utilizzando if dichiarazioni, ma dovrebbero essere convertito in try_files. Vedi:

+3

questo non sembrava funzionare per me, ma questo ha fatto: http://winginx.com/htaccess –

+0

Né ha funzionato per me.Ho provato una regola di riscrittura molto semplice. –

+1

puoi dirmi, dove dovrei usare l'uscita? nel file php? Ho usato [this] (http://winginx.com/htaccess), e mi ha dato un output contenuto in 'if', ora voglio sapere come dovrei usarlo? –

1

si può facilmente rendere uno script PHP per analizzare il vostro vecchio .htaccess, sto usando questo per regole PrestaShop:

$ content = $ _POST [ 'contenuti' ];

$lines = explode(PHP_EOL, $content); 
    $results = ''; 

    foreach($lines as $line) 
    { 
     $items = explode(' ', $line); 

     $q = str_replace("^", "^/", $items[1]); 

     if (substr($q, strlen($q) - 1) !== '$') $q .= '$'; 

     $buffer = 'rewrite "'.$q.'" "'.$items[2].'" last;'; 

     $results .= $buffer.PHP_EOL; 
    } 

    die($results); 
+12

È un peccato che una risposta a metà strada sia stata danneggiata da un commento irriverente. L'ho modificato. –

+0

Questa risposta può essere un vero toccasana come una soluzione rapida in ogni caso, ma è meglio non riscrivere in questo modo. Soprattutto per un sito di e-commerce. Si prega di leggere questo documento https://www.nginx.com/resources/wiki/start/topics/examples/likeapache-htaccess/ –

9

non hanno ancora testato, ma gli sguardi sono meglio di the one Alex parla.

La descrizione in winginx.com/en/htaccess dice:

Chi l'htaccess to nginx converter

Il servizio è quello di convertire .htaccess di un Apache a nginx istruzioni di configurazione.

Prima di tutto, il servizio era pensato come un mod_rewrite al convertitore nginx. Tuttavia, ti permette di convertire alcune altre istruzioni che hanno motivo di essere trasferite da Apache a nginx.

Le istruzioni del server delle note (ad esempio php_value, ecc.) Vengono ignorate.

Il convertitore non controlla la sintassi, incluse le espressioni regolari e gli errori logici.

Si prega di controllare il risultato manualmente prima dell'uso.

+0

winginx.com/htaccess non funziona –

+0

Appena notato ieri che è giù adesso, sì. Spero che tornerà online. –

3

Utilizzare questa: http://winginx.com/htaccess

convertitore online, modo simpatico e risparmio di tempo;)

+2

Se guardi da vicino, puoi vedere che ho postato quel link prima che tu lo facessi .. –

+0

vero uomo, mi dispiace! – ErickXavier