Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cristian_web

.htaccess

Recommended Posts

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)

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

  • /www/google/esse é o diretório que está sendo lido ou seja: o htaccess tá chamando o diretório /www/google/site/google/index.php sendo que era para chamar /www/site/google/index.php
  • /www/site/google/esse sim era o diretório que o htaccess deveria ler.

Compartilhar este post


Link para o post
Compartilhar em outros sites

altere essa linha

 

RewriteRule ^(/)?$ site/google/index.php [L]

 

para

 

RewriteRule ^(/)?$ ../site/google/index.php [L]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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]

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.