Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal.
Por favor me ajudem nessa questão;
Se eu digito
forum.imasters.com.br
sucesso. Mas se eu digito
imasters.com.br/forum
ele vai para uma 404 ou algo do tipo.
Quero saber como criar uma .htaccess deste tipo, visto que o que tenho na raiz principal é este
RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php?url=$1
e gostaria mantê-lo.
Assim, não sei se estou correto no que escrevo. Mas queria que minha arquitetura fosse assim. Pelo menos nesse sentido
_root
index.php
.htaccess
tpl (dir com arquivos do site principal)
publich (dir com arquivos do site)
dir_subdominio
{
index.php
.htaccess
tpl (dir com arquivos do subdominio)
publich (dir com arquivos subdominio)
}
Então se eu digitasse
site.com.br/index ou site.com.br funcionasse
dir_subdominio/index ou dir_subdominio funcionasse
* **site.com.br /*dir_subdominio não funcionasse
Alguém ajuda?
Ele vai dar erro, obviamente pq ele vai procurar uma página FORUM.PHP provavelmente, e não o subdiretório.
O que eu faço é atribuir uma exceção para determinados diretórios não serem escritos no htaccess.
RewriteRule ^(forum)($|/) - [L]
Eu faria assim, no meu caso. Ou mais simples, crie um HTACCESS na pasta forum, e nele, coloque:
RewriteEngine off
Sr. @Williams Duarte eu uso algo parecido com o video, a diferença é que não está em OOP.
Mas é essa a questão, no file_exists não contem o dir forum, então acho eu que teria que ir ao 404. Mas ele usa o subdominio.
Sr. @Maykel-ctba
RewriteRule ^(forum)($|/) - [L]
essa regra não funcionou
Up.
Se não conseguir fazer isso pelo .htaccess, faça pelo script
eu fiz pelo script,
if(file_exists('template/'.$url[0].'.php')){ require_once('template/'.$url[0].'.php');}elseif(file_exists('template/'.$url[0].'/'.$url[1].'.php')){ require_once('template/'.$url[0].'/'.$url[1].'.php');} elseif(file_exists('template/'.$url[0].'/'.$url[1].'/'.$url[2].'.php')){ require_once('template/'.$url[0].'/'.$url[1].'/'.$url[2].'.php'); }else{ require_once('template/404.php');}
Então neste caso, quando viesse outro dir não teria que ir para o 404?
Da um debug neste script, a única forma de encontrar o erro
<?php
try {
if (isset($url[2])) {
if (file_exists('template/'.$url[0].'/'.$url[1].'/'.$url[2].'.php')) {
require_once('template/'.$url[0].'/'.$url[1].'/'.$url[2].'.php');
} else {
throw new Exception("template indice 2 não encontrado.", 1);
}
} elseif ($url[1]) {
if (file_exists('template/'.$url[0].'/'.$url[1].'.php')) {
require_once('template/'.$url[0].'/'.$url[1].'.php');
} else {
throw new Exception("template indice 1 não encontrado.", 1);
}
} elseif ($url[0]) {
if (file_exists('template/'.$url[0].'.php')) {
require_once('template/'.$url[0].'.php');
} else {
throw new Exception("template indice 0 não encontrado.", 1);
}
} else {
if (file_exists('template/404.php')) {
require_once('template/404.php');
} else {
throw new Exception("template 404 não encontrado.", 1);
}
}
} catch (Exception $e) {
echo 'Erro: ' $e->getMessage();
}Obrigado jovem, descobri porque não estava indo para a 404.
Como a estrutura mantinha o mesmo nome da pasta, ele encontrava a pasta template também dentro do subdomnio e incluia os arquivos e não retornava a 404.
Mas ao renomear a pasta template dentro do subdominio ele já não achava para incluir e procurava a 404.
*************************
Agora vou pesquisar algo para que possa ser identificado se a pasta pertence a um subdominio e daí fazer a validação. Assim posso manter a mesma estrutura de criação e fazer a validação.
Que bom que resolveu! :thumbsup:
Regra de htaccess e independente de subdomínio.
o que você pode fazer, é apontar sua regra para um script de inicialização do sistema
exemplo: bootstrap.php
Veja nestas aulas como criar, segue as vídeo-aulas https://www.youtube.com/watch?v=Aw28-krO7ZM
Para criar subdomínio automaticamente, se tiver usando Cpanel https://github.com/CpanelInc/xmlapi-php
Se não for isso explique direito. =D