Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal... Passei o dia tentando fazer uma aplicação com .HTACCESS e ainda não descobri como fazer...
É o seguinte: Sou programador de um portal, e nós trabalhamos com diversos sites separados por subdominios. Estou buscando uma organização melhor então gostaria de colocar todos os sites em uma pasta separada, já entrei em contato com o servidor e eles disseram que não era possível alterar as configurações do servidor pois é compartilhado. Para facilitar o entendimento vou mostrar um exemplo.
Diretórios atuais:
/www/
/www/subdominio1/(arquivos do subdominio)
/www/subdominio2/(arquivos do subdominio)
/www/subdominio3/(arquivos do subdominio)
/www/subdominio4/(arquivos do subdominio)
Como eu gostaria que ficasse
/www/
/www/sites/subdominio1/(arquivos do subdominio)
/www/sites/subdominio2/(arquivos do subdominio)
/www/sites/subdominio3/(arquivos do subdominio)
/www/sites/subdominio4/(arquivos do subdominio)
Gabriel Heming desde já agradeço, só estou com umas duvidas:
exemplo
meu site é http://exemplo.com.br
tenho o subdominio google.exemplo.com.br
os diretórios ficam:
/www/
/www/google/
/www/site/
/www/site/google
então eu preciso jogar esse htaccess dentro da primeira pasta google?
ficaria assim?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(google.)?exemplo.com.br$
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/$1
RewriteCond %{HTTP_HOST} ^(google.)?exemplo.com.br$
RewriteRule ^(/)?$ site/google/index.php [L]
Se não me engano, você deve colocar o .htaccess na pasta raiz do seu site, pois todas as subpastas assumem aquele .htaccess (situado na pasta pai), caso não haja outro .htaccess na pastas filhas.
Não posso lhe dizer com certeza, só testando. Mas já tive casos de outras configurações do .htaccess, que as regras foram assumidas por todas as pastas filhas.
Conforme a regra das subpastas, acredito que seria assim
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?exemplo.com.br$
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/$1
RewriteCond %{HTTP_HOST} ^(www.)?exemplo.com.br$
RewriteRule ^(/)?$ site/index.php [L]
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteCond %{REQUEST_URI} !^/site/google/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/google/$1
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteRule ^(/)?$ site/google/index.php [L]
Um conjunto de regras para cada url acessada
na parte (www.)? está com parenteses e (ponto de interrogação) para demonstrar que é opcional, tanto acessando www.exemplo.com.br e exemplo.com.br, vai para o mesmo lugar, mas quando é google.exemplo.com.br é obrigatório ter google, por isso, não há parenteses nem ponto de interrogação
Olá Gabriel Heming, fiz o teste como você disse só que não resolveu está retornando a listagem de diretórios
Index of /
Name Last modified Size Description
Oque acontece é o seguinte... Parece que ele ta lendo o diretório dentro do subdominio... Eu gostaria que antes disso voltasse um diretório
ex:
altere essa linha
RewriteRule ^(/)?$ site/google/index.php [L]
para
RewriteRule ^(/)?$ ../site/google/index.php [L]
Ainda está listando os diretórios do subdominio :upset:
>
altere essa linha
RewriteRule ^(/)?$ site/google/index.php [L]
para
RewriteRule ^(/)?$ ../site/google/index.php [L]
Tentei algo mais simples para ver se funcionava agora está dando o seguinte erro:
Codigo:
RewriteEngine On
RewriteRule ^(/)?$ ../site/google/index.php [L]
Not Found
The requested URL /home/nome_do_site/www/site/google/index.php was not found on this server.
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
Verifiquei e o caminho está correto.
Observação: Coloquei o Arquivo .HTACCESS dentro da pasta do subdominio na raiz do site
Se não me engano, esse erro ocorre quando o .htaccess está errado. '-'
vamos tentar algo mais simples pra depois complicar...
tente utilizar o arquivo com o seguinte código
RewriteEngine On
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteCond %{REQUEST_URI} !^../site/google/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../site/google/$1
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteRule ^(/)?$ ..site/google/index.php [L]
>
Se não me engano, esse erro ocorre quando o .htaccess está errado. '-'
vamos tentar algo mais simples pra depois complicar...
tente utilizar o arquivo com o seguinte código
RewriteEngine On
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteCond %{REQUEST_URI} !^../site/google/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ../site/google/$1
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteRule ^(/)?$ ..site/google/index.php [L]
Esse codigo continua listando os diretórios da pasta do subdominio =/
Parece que o htaccess não tem permissão o suficiente para acessar o dominio... somente o subdominio, será se há alguma forma dele ter esse acesso?
encontrei um problema numa linha
corrigi, ele fazia com que qualquer acesso fosse para o subdominio
RewriteEngine On
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteCond %{REQUEST_URI} !^../site/google/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^google(.*)$ ../site/google/$1
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteRule ^google.exemplo.com.br(/)?$ ..site/google/index.php [L]
O problema que estou sem como testar aqui, então nem sei se o que eu estou fazendo está certo, como falei anteriormente, me viro nisso '-'
>
encontrei um problema numa linha
corrigi, ele fazia com que qualquer acesso fosse para o subdominio
RewriteEngine On
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteCond %{REQUEST_URI} !^../site/google/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^google(.*)$ ../site/google/$1
RewriteCond %{HTTP_HOST} ^google.exemplo.com.br$
RewriteRule ^google.exemplo.com.br(/)?$ ..site/google/index.php [L]
O problema que estou sem como testar aqui, então nem sei se o que eu estou fazendo está certo, como falei anteriormente, me viro nisso '-'
Cara... eu não sei mais oque fazer.Ja tentei de tudo...
Esse ultimo que você me passou deu o mesmo problema ele está listando o diretório do subdominio e não a outra pasta a qual ele precisa listar.
Poderia ser algum problema na hospedagem?
Opá
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ ads.php [NC,L]
RewriteRule ^([0-9_a-z-]+)\/?$ index.php?id=$1 [NC,L]
Espero ter ajudado
Equipe: Script-Mania
http://scriptmania.com.br
Você quer que ao acessar a url do site, seja utilizada a nova pasta, ao invés da antiga.
Eu possuo um modelo de .htaccess que utilizo em um site, vou lhe mostrar as linhas que deve alterar, não sou expert, talvez tenha itens desnecessários, mas funciona XD
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?seu site.com.br$
RewriteCond %{REQUEST_URI} !^/a pasta do seu site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /a pasta do seu site/$1
RewriteCond %{HTTP_HOST} ^(www.)?seu site.com.br$
RewriteRule ^(/)?$ a pasta do seu site/index.php [L]
aonde está escrito "seu site", é o endereço de acesso a url
por exemplo, quando eu acesso a url (ficticia) "www.meusite.com.br", cai em uma determinada pasta do servidor que é considerada raiz...
imaginamos que eu tenha incluido o site na pasa "site" eu teria que acessar o site da seguinte forma
www.meusite.com.br/site/
por esse exemplo, o htacces ficaria da seguinte forma
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?meusite.com.br$
RewriteCond %{REQUEST_URI} !^/site/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /site/$1
RewriteCond %{HTTP_HOST} ^(www.)?meusite.com.br$
RewriteRule ^(/)?$ site/index.php [L]
como você possui subdomínios, você também deve substituir aonde há ^(www.)? para o seu subdmonio, criando uma regra para cada subdomínio.