Como converter este .htaccess muito simples para Nginx?
May 20 2019
Estou usando isso .htaccessque passa tudo após URL para $param, então
example.com/news/idvai para PHP como $_GET['param']='news/id'. Mas o Nginx está sempre me jogando na página 404.
Meu .htaccess:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule (.*) index.php?param=$1
O que experimentei no Nginx default.conf:
server {
listen 80;
listen [::]:80;
server_name domain.com;
root /var/www/html;
location / {
if (!-f $uri){
set $rule_0 1$rule_0;
}
if (!-d $uri){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^(.*) index.php?param=$1;
}
}
}
Respostas
1 MichaelHampton May 20 2019 at 09:08
Você não usa ifaqui de forma alguma, nem verifica manualmente a existência de arquivos. Em vez disso, esse padrão comum é tratado por try_files.
Por exemplo:
location / {
try_files $uri $uri/ /index.php?param=$uri;
}
(Se o seu aplicativo da web estiver quebrado e não puder lidar com a liderança /no URI, corrija o aplicativo da web se possível ou veja esta pergunta se não estiver.)
1 SandroBenevides May 21 2019 at 01:15
Eu poderia consertar usando estas regras:
server{
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=$1;
}
}
Se você tiver location / {} sem nenhuma instrução interna, remova-o.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?