404 Not Found nginx

Tenho um projeto Php, no qual fiz as alterações no wo site edit e adicionei as regras de reescrita do nginx, e está funcionando perfeitamente.

Porém o projeto não é multilinguagem, então criei um diretório no projeto existente com nome de “br”, subi os arquivos e o novo db. O projeto novo abriu a homepage e a área de administração também está funcionando, porém as páginas internas tipo /br/loja /br/categorias dá erro “404 Not Found nginx” por acaso você já passou por algo parecido, tem alguma ideia o que pode ser, se pode ser algum bloqueio, etc…

Visando que o projeto inicial que está na raiz do site está funcionando perfeitamente.

Obs.: Até pensei em colocar essa versão em um subdominio (https://br.domain.com), porém como o site só vai ter mais essa versão de linguagem (br) então decidi colocar em diretório, ficaria melhor para o projeto.

Vai em:
/var/www/dominioprincipal.com/conf/nginx

Depois cria um arquivo chamado br.conf e adiciona as regras abaixo no arquivo.

set $dir "";
if ($request_uri ~ ^/([^/]*)/.*$ ) {
set $dir1 /$1;
}

location /br {
try_files $uri $uri/ $dir1/index.php?$args;
}

Salva o arquivo e reinica o Nginx.

Vamos lá, parece que estamos no caminho certo! Desde já quero agradecer por ajudar nesse projeto Php.

O problema de erro 404 Not Found nginx foi solucionado :raised_hands:, porém continua com problema de como se eu não estivesse adicionado as regras de reescrita do nginx personalizada conforme eu inseri para funcionar o site principal (o site da raiz).

Abaixo está as regras de reescrita do nginx que usei para funcionar o site principal:

	charset utf-8;

location ~ \.php$ {
  try_files $uri =404;
  include fastcgi_params;
  fastcgi_pass php80;
}

location /index {
  rewrite ^/index$ /index.php last;
}
location /error {
  rewrite ^/error$ /error.php last;
}
location /offline {
  rewrite ^/offline$ /offline.php last;
}
location /signin {
  rewrite ^/signin$ /signin.php last;
}
location /signup {
  rewrite ^/signup$ /signup.php last;
}
location /signout {
  rewrite ^/signout$ /signout.php last;
}
location /forgot {
  rewrite ^/forgot$ /forgot.php last;
}
location /profile {
  rewrite ^/profile$ /profile.php last;
}
location /reset {
  rewrite ^/reset$ /reset.php last;
}
location /sitemap.xml {
  rewrite ^/sitemap.xml$ /sitemap.php last;
}
location /store/ {
  rewrite ^/store/([^/]+) /single-store.php?slug=$1&$query_string last;
}
location /redirect/ {
  rewrite ^/redirect/([^/]+) /redirect.php?c=$1&$query_string last;
}
location / {
  if (!-e $request_filename) {
    rewrite ^/([^/]+)/?$ /single-page.php?slug=$1&$query_string last;
  }
}

Você sabe se preciso alterar essas regras para o diretório e adicionar junto com as regras que você passou anteriormente?

Obs.: Essas regras acima não foi o desenvolvedor do projeto que me passou, ele não quis nem dá suporte para nginx, eu que consegui quebrando um pouco a cabeça com ajuda do chatGPT, e levando em consideração as dicas que você me passou da última vez a respeito dessas regras.

Apaga o br.conf e cria novamente como está abaixo:

Depois usa o nginx -t para verificar se retorna algum erro.
Se sim, envia um print do erro.
Se nao, reinicia o Nginx

set $dir "";
if ($request_uri ~ ^/([^/]*)/.*$ ) {
set $dir1 /$1;
}

location /br {
try_files $uri $uri/ $dir1/index.php?$args;
}

location /br/index {
  rewrite ^/index$ /index.php last;
}
location /br/error {
  rewrite ^/error$ /error.php last;
}
location /br/offline {
  rewrite ^/offline$ /offline.php last;
}
location /br/signin {
  rewrite ^/signin$ /signin.php last;
}
location /br/signup {
  rewrite ^/signup$ /signup.php last;
}
location /br/signout {
  rewrite ^/signout$ /signout.php last;
}
location /br/forgot {
  rewrite ^/forgot$ /forgot.php last;
}
location /br/profile {
  rewrite ^/profile$ /profile.php last;
}
location /br/reset {
  rewrite ^/reset$ /reset.php last;
}
location /br/sitemap.xml {
  rewrite ^/sitemap.xml$ /sitemap.php last;
}
location /br/store/ {
  rewrite ^/store/([^/]+) /single-store.php?slug=$1&$query_string last;
}
location /br/redirect/ {
  rewrite ^/redirect/([^/]+) /redirect.php?c=$1&$query_string last;
}
location /br/ {
  if (!-e $request_filename) {
    rewrite ^/([^/]+)/?$ /single-page.php?slug=$1&$query_string last;
  }
}

O erro 404 Not Found nginx voltou. Acima está o erro nginx -t

De qualquer forma vou fazer meus testes, se de tudo não ser certo, vou ter que partir para o subdominio. Obs.: Esse erro que aparentemente apareceu no print acima com o subdominio br. é referente ao site criado para criar o db, porém foi excluído, só deixei o db.

Consegui resolver com as regras abaixo:

location /br {
	try_files $uri $uri/ /br/index.php?$args;
}

location ~ \.php$ {
	try_files $uri =404;
	include fastcgi_params;
	fastcgi_pass php80;
}

location /br/index {
	rewrite ^/br/index$ /br/index.php last;
}
location /br/error {
	rewrite ^/br/error$ /br/error.php last;
}
location /br/offline {
	rewrite ^/br/offline$ /br/offline.php last;
}
location /br/signin {
	rewrite ^/br/signin$ /br/signin.php last;
}
location /br/signup {
	rewrite ^/br/signup$ /br/signup.php last;
}
location /br/signout {
	rewrite ^/br/signout$ /br/signout.php last;
}
location /br/forgot {
	rewrite ^/br/forgot$ /br/forgot.php last;
}
location /br/profile {
	rewrite ^/br/profile$ /br/profile.php last;
}
location /br/reset {
	rewrite ^/br/reset$ /br/reset.php last;
}
location /br/sitemap.xml {
	rewrite ^/br/sitemap.xml$ /br/sitemap.php last;
}
location /br/store/ {
	rewrite ^/br/store/([^/]+) /br/single-store.php?slug=$1&$query_string last;
}
location /br/redirect/ {
  rewrite ^/br/redirect/([^/]+) /br/redirect.php?c=$1&$query_string last;
}
location /br/ {
	if (!-e $request_filename) {
		rewrite ^/br/([^/]+)/?$ /br/single-page.php?slug=$1&$query_string last;
	}
}

Legal. Vi que adicionou a conexão com o PHP através desta configuração.
Imaginei que estivesse mantendo a configuração do php pela configuração nativa do WordOps.
Fiquei feliz com o feedback.

1 curtida

Na verdade eu entendo muito pouco sobre isso, porque tem vários tipos de arquivos .conf, depois de testar outros e não ter dado certo, acabei chegando até esse, também com ajuda do chatGPT.

De qualquer forma obrigado!

Sim.
Como se trata de um site PHP precisaria ter acesso ao server para analisar e auxiliar corretamente.
Mas fico feliz que deu certo.
Obrigado pelo feedback.

1 curtida