Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal,

 

Estou tendo problemas na hora de criar uma rota em meu localhost que será posteriormente colocada no servidor www, quando eu digito localhost/new_site/home ele sempre redireciona para o 404 (inicio/404.php) mesmo a pasta->pagina home/home.php existindo,

 

segue configurações que estou usando arquivo .htaccess

 

RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*) ?$1

<IfModule mime_module>
  AddHandler application/x-httpd-ea-php73 .php .php7 .phtml
</IfModule>

 

Arquivo index.php na raiz da pasta do site localhost/new_site

 

$SERVER             = ($_SERVER ?? null);
$REQUEST_URI        = filter_input(INPUT_SERVER, 'REQUEST_URI');
$INITE              = strpos($REQUEST_URI, '?');

$DIR_BASE           = 'new_site';
$FIRST_DIR          = 'home/';

if ($INITE) :
    $REQUEST_URI    = substr($REQUEST_URI, 0, $INITE);
endif;

$REQUEST_URI_PASTA  = substr($REQUEST_URI, 1);
$URL                = explode('/', $REQUEST_URI_PASTA);
$URL[0]             = ($URL[0] != '' ? $URL[0] : 'home');

if (file_exists($FIRST_DIR . $URL[0] . 'php')) :
    require($FIRST_DIR . $URL[0] . 'php');
    echo $URL[0];
elseif (is_dir($FIRST_DIR . $URL[0])) :
    if (isset($URL[1]) && file_exists($FIRST_DIR . $URL[0] . '/' . $URL[1]) . 'php') :
        require($FIRST_DIR . $URL[1] . 'php');
        echo $URL[0];
    endif;
else :
    require($FIRST_DIR . '404.php');
    echo $URL[0];
endif;

 

estou usando uma estrutura de pastas assim (exemplo):

 

-> localhost
        -> new_site
        -> inicio
            ->css
                ->style.css
            ->scripts
                ->scripts.js
            -> inicio.php
            -> prodtuo.php
            -> categorias.php
        -> admin
            ->css
                ->style.css
            ->scripts
                ->scripts.js
            -> inicio.php
            -> adm_produtos.php
            -> adm_categorias.php

 

Postado

@bigbossbr Você poderia usar uma estrutura de map para configurar a suas rotas.

 

olhando os Métodos "file_exists", você está passando o nome do arquivo errado, nesse caso sem o ponto entre o nome do arquivo e sua extensão. Ele está procurado algo como "home/homephp"

e não "home/home.php".

 

Para resolver isso basta adicionar um .(ponto) antes do 'php'.

$SERVER             = ($_SERVER ?? null);
$REQUEST_URI        = filter_input(INPUT_SERVER, 'REQUEST_URI');
$INITE              = strpos($REQUEST_URI, '?');

$DIR_BASE           = 'new_site';
$FIRST_DIR          = 'home/';

if ($INITE) :
    $REQUEST_URI    = substr($REQUEST_URI, 0, $INITE);
endif;


$REQUEST_URI_PASTA  = substr($REQUEST_URI, 1);
$URL                = explode('/', $REQUEST_URI_PASTA);
$URL[0]             = ($URL[0] != '' ? $URL[0] : 'home');


if (file_exists($FIRST_DIR . $URL[0] . '.php')) :
    require($FIRST_DIR . $URL[0] . '.php');
    echo $URL[0];
elseif (is_dir($FIRST_DIR . $URL[0])) :
    if (isset($URL[1]) && file_exists($FIRST_DIR . $URL[0] . '/' . $URL[1] . '.php')) :
        require($FIRST_DIR . $URL[1] . '.php');
        echo $URL[0];
    endif;
else :
    require($FIRST_DIR . '404.php');
    echo $URL[0];
endif;

 

Postado

@bigbossbr 

 

19 minutos atrás, bigbossbr disse:

if (file_exists($FIRST_DIR . $URL[0] . '.php')) :

 

No código que eu passei tem no seu não

 

5 horas atrás, bigbossbr disse:

if (file_exists($FIRST_DIR . $URL[0] . 'php')) :

 

Se você escrever na tela o endereço do arquivo vai ficar assim.

 

"home/home.php"

 

No seu código que está sem o ponto, e está saindo assim

 

"home/homephp"

 

O ponto que eu falo não é dá concatenação e sim da string "php", assim, ".php";

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!