Suponho que o principal problema aqui não seja converter as regras, mas entender onde você deve usá-las. Por diretório .htaccess
o contexto é o recurso específico do Apache HTTPD e o Nginx doesn ' t suportar esse tipo de comportamento.
O equivalente Nginx é a diretiva location
em seu nginx.conf
, por exemplo
http {
. . .
server {
. . .
location /country/ {
rewrite ^/country/(.+)/$ /country/index.php?country=$1 break;
rewrite ^/country/(.+)/page/(.+)/$ /country/index.php?country=$1&page=$2 break;
}
location /genre/ {
rewrite ^/genre/(.+)/$ /genre/index.php?genre=$1 break;
rewrite ^/genre/(.+)/page/(.+)/$ /genre/index.php?genre=$1&page=$2 break;
}
}
}
Aqui, você pode usar as regras rewrite
de qualquer ferramenta de conversão que encontrou, mas também pode aprender como convertê-los por si mesmo, já que a sintaxe é extremamente semelhante:
- Diretiva
RewriteRule
do Apache:RewriteRule Pattern Substitution [flags]
-
rewrite
da diretiva do Nginx:rewrite regex replacement [flag];
- No Nginx, você precisa incluir o
/
inicial no início (também^/
,/country/
etc.). -
Substitutos também são relativos à raiz, então você deve incluir os
/country/
etc. principais. - Você precisa de
;
no final de cada linha de regra.
As flags têm esses equivalentes:
-
[L]
- >last
dentro deserver {}
ebreak
dentro delocation {}
.Esta parte é realmente crucial, pois a maioria dos conversores não consegue entender a diferença contextual!
But if these directives are put inside a
location
, thelast
flag should be replaced bybreak
, or otherwise nginx will make 10 cycles and return the 500 error. -
[R=302]
- >redirect
-
[R=301]
- > %código%
As reescritas do condições do Apache, como permanent
, podem ser substituídas em Nginx por RewriteCond %{HTTP_HOST} ^example.com
diretivas : if
, por exemplo
location / {
if ($http_host ~ "^example.com"){
rewrite ^(.*)$ http://www.example.com/$1 redirect;
}
rewrite ^/(.+)-live-streaming/$ /tv.php?tv=$1 break;
}
O resto você pode aprender lendo os manuais vinculados e usando a ferramenta de conversão para fins educacionais. (Anteriormente, eu estava vinculado à ferramenta de conversão apache2nginx que não conseguia lidar com a relatividade da raiz e usava if ($http_host ~ "^example.com") { }
em vez de break
. O htaccess para o conversor nginx funciona melhor.