Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos,
Tenho um site construido em php. Estou a utilizar as técnicas de include, assim tenho um aside.php, footer.php e header.php e apenas tenho que criar os pages.php. Estas sim vão aumentando e mudando o conteúdo na medida da necessidade.
Como ainda tenho este site dentro de portas, no interior de casa, acedo ele via ip. Portanto, digito 192.168.1.2 e voilá! Tenho acesso ao site. Depois as urls vão mudando e ficando deste jeito: http://192.168.1.2/run.php?page=page-a92
A minha dúvida é! Uma vez que o ip irá ser substituído pelo nome do domínio, quando o colocar online, como faço para substituir esta parte por, por exemplo um título dessa página? run.php?page=page-a92 por título-da-página
include 'assets/header.php';
include 'assets/aside.php';
$_GET['page'] = isset($_GET['page']) ? $_GET['page'] : 'pagina_padrao';
if(file_exists("page/{$_GET['page']}.php"))
include("page/{$_GET['page']}.php");
else
include 'assets/error.php';
include 'assets/footer.php';
Espero ter conseguido explicar bem a minha questão, obrigadoUma boa pratica é definir em algum lugar uma constate em um arquivo de config.
Ex: de um config.php :
<?php
define('BASE_PATH', 'http://localhost/meusite/');
E nesse caso você importaria em todos os arquivos que precisam, (ou no header.php no seu caso)
E sempre usaria a constante quando precisar chamar a URL, ex:
<body>
<p>
<?php echo BASE_PATH; ?>run.php?page=page-a92
</p>
<br /> OU <br />
<p>
<?php echo BASE_PATH . 'run.php?page=page-a92' ?>
</p>
</body>
Da pra melhorar e deixar dinâmico a constante 'BASE_PATH', ex:
<?php
//Caso tenha 192.168.... na URL, utiliza o endereço local.
if (strpos($_SERVER['SERVER_NAME'], '192.168') !== false) {
define('BASE_PATH', 'http://localhost/meusite/'); define('BASE_PATH', 'http://meusite.com.br/');
}Olá pessoal,
Estou a seguir este vídeo:
Tenho dois ambientes. Um que é o meu servidor de produção, simulado com um raspberrypi. E um ambiente de desenvolvimento que é o meu próprio pc. Para aceder ao de teste vou via: http://localhost:8000/
Para aceder ao de produção vou via ip.
Acontece que após criar o .htaccess com o seguinte code:
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1
E o index.php com o seguinte:
<html>
<head>
<title>Home</title>
<meta charset="utf-8">
</head>
<body>
<h1>Home</h1>
<?php
var_dump($_GET['url']);
?>
</body>
</html>
Caso tente aceder via [http://localhost:8000/](http://localhost:8000/) recebo este ecrã: [https://snag.gy/PtCInw.jpg](https://snag.gy/PtCInw.jpg)
Caso tente via produção recebo este ecrã: [https://snag.gy/EkKHxV.jpg](https://snag.gy/EkKHxV.jpg)
Não sei se devo colocar o .htaccess na base do projecto ou na base "projecto/exercises/php" Mas penso que seja na base do projecto, pois é onde o apache direcciona o ip que estou a utilizar.
Portanto, o que estou a fazer de mal?Olá pessoal,
Desculpem estar a puxar o tópico para cima mas estou a dar voltas ao servidor e não encontro solução. Será problema do meu servidor, talvez falte alguma configuração, ou estou fazendo algo de mal no php?
Obrigado
Olá,
Consegui resolver as coisas. Percebi como as coisas funciona. Basicamente no .htaccess digo que tudo o que estiver depois do index.php deve ser passado para uma variável, é o que este code faz, certo?
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ index.php?var=$1
Depois no ficheiro index.php, através de php construo a lógica das url's amigáveis. Por exemplo:
if($primeiro == 'Notes'){
switch ($segundo) {
case 'Vamos-Ganhar':
include ('header.php');
include ('notes.php');
include ('footer.php');
break;
case 'Afinal foi simples':
include ('header.php');
include ('notes.php');
include ('footer.php');
break;
case 'Como-montar-isso':
include ('header.php');
include ('notes.php');
include ('footer.php');
break;
case 'Testar-Testar-e-Testar':
include ('header.php');
include ('notes.php');
include ('footer.php');
break;
default:
include ('header.php');
include ('notes_final.php');
include ('footer.php');
break;
} // end switch
} else {
if ($primeiro == 'unica-pagina' && $segundo == '') {
include ('header.php');
include ('page_single.php');
include ('footer.php');
} else {
include ('assets/header.php');
include ('rosto.php');
include ('assets/footer.php');
O que acham? Devo-me preocupar com a página rosto.php? Pois ela é que é carregada quando o user entra no site. Como estou a colocá-la no final da verificação não ficará mais lento o site? Ou não tem muita diferença? Que sugestão dão para que ela seja carregada logo no ínicio ou quando o user colocar uma url que não entre nos padrões das url's que pretendo?
Obrigado pela ajuda
Olá!
Procure por urls amigáveis