Ir ao conteúdo
  • Cadastre-se

PHP Arquivo .htaccess e rota php


Posts recomendados

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

 

Link para o comentário
Compartilhar em outros sites

@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;

 

Link para o comentário
Compartilhar em outros sites

@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";

 

Link para o comentário
Compartilhar em outros sites

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...