convertir htaccess en nginx

Je n’ai pas de chance de convertir les règles de htaccess en réécriture de nginx. J’ai vérifié la documentation de NginxRewriteModule et en ai fait quelques-unes, mais les plus compliquées me manquent. Voici ce que je regarde:

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] 

Les outils en ligne permettant de traduire les outils de réécriture Apache .htaccess en Nginx incluent:

Notez que ces outils seront convertis en expressions de réécriture équivalentes en utilisant les instructions if , mais ils devront être convertis en try_files . Voir:

Je ne l’ai pas encore testé, mais le look est meilleur que celui mentionné par Alex.

La description sur winginx.com/fr/htaccess dit:

À propos du convertisseur htaccess-nginx

Le service consiste à convertir les instructions .htaccess d’Apache en nginx.

Tout d’abord, le service était considéré comme un convertisseur mod_rewrite-nginx. Cependant, il vous permet de convertir d’autres instructions ayant des raisons d’être scopes d’Apache vers nginx.

Notez que les instructions du serveur (par exemple, php_value, etc.) sont ignorées.

Le convertisseur ne vérifie pas la syntaxe, y compris les expressions régulières et les erreurs logiques.

Veuillez vérifier le résultat manuellement avant utilisation.

Les règles de réécriture sont pratiquement les mêmes avec nginx: http://wiki.nginx.org/HttpRewriteModule#rewrite

Quelles règles vous causent des problèmes? Je pourrais vous aider à traduire ceux-ci!

Utilisez ceci: http://winginx.com/htaccess

Convertisseur en ligne, bon moyen et gain de temps;)

Vous pouvez facilement créer un script Php pour parsingr votre ancien htaccess, j’utilise celui-ci pour les règles PRestashop:

$ content = $ _POST [‘content’];

  $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);