Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo de Tarso F. M.

Alterar root com .htaccess...

Recommended Posts

Fala pessoal!

 

Olha eu aqui de novo! :rolleyes:

 

Primeiramente, gostaria de saber se é possível trabalhar com arquivos .htaccess localmente... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Imaginando que em uma pasta específica qualquer eu queira criar algumas regras e tals... Se sim, como faço? Não estou conseguindo executar os arquivos .htaccess localmente...

 

Bom, essa pergunta acima na verdade já responderia em partes a minha pergunta inicial do tópico. Por que "em partes"? Porque eu na verdade quero saber se há a possibilidade de se definir o root de cada projeto. Oras, vamos analisar:

 

Localmente, sempre salvo os projetos dentro de uma pasta "Projetos". O caminho seria esse:

D:\Projetos

Aí, dentro da pasta "Projetos", teremos as pastas que nomeiam cada projeto em si, por exemplo:

D:\Projetos\Papel Magia

D:\Projetos\Boticário

D:\Projetos\Natura

 

(etc)

Ou seja, para cada projeto, o "root" deveria ser exatamente aqui, o nome da pasta, mas se eu trabalhar com caminhos absolutos (que aprendi em meu outro tópico sobre Páginas de erros personalizadas, obrigado Beraldo!), o caminho, por ser absoluto, sempre irá apontar para:

D:/ (ou o http:// localhost/)

Que é a "raiz máxima" definida no meu arquivo do Apache, o httpd.conf.

 

Então, eu queria saber se é possível eu criar um arquivo .htaccess para colocar na pasta de cada projeto que eu considero o "root" daquele projeto, para que o uso de caminhos absolutos funcionem corretamente...

 

Seria algo mais ou menos assim:

DirectoryIndex /Projetos/Papel Magia/index.php
Mas não informando o nome do arquivo index, mas sim a pasta index... Aí eu teria um arquivo desse em cada projeto, apontando para a respectiva pasta...

 

Isso é possível? :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

No arquivo de configuração do apache - httpd.conf você tem que descomentar a linha: mod_rewrite

Deve-se mudar em < Directory "${path}/www" >… a diretiva AllowOverride None para AllowOverride All,

 

Também aparece logo abaixo em < Directory "C:/Program Files/EasyPHP 2.0b1/www">… e também deve ser realizada essa alteração. Sempre reiniciando o Easy PHP após as alterações.

 

ai em cima peguei em um site: http://brunotorres.net/urls acho que aqui no imasters tem uma matéria falando sobre o assunto, acho não, tenho ctz, não não procurei!

 

No caso ai em cima ta falando do EasyPHP, mas a regra é a mesma se tiver outro Pack ou só o Servidor instalado.

 

Quando aos arquivos, você pode sim fazer o que disse.

basta colocar um arquivo .htaccess dentro de cada "root"

 

na realidade o .htaccess é valido como regra para aquela pasta que ele está.

por exemplo, estou desenvolvendo um projeto e tenho um .htaccess dentro do root do site e na pasta de css tem outro .htaccess, as regras deste são aplicadas apenas na pasta /css.

 

 

Meu arquivo httpd.conf com as alterações:

 

<Directory "${path}/www">

Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny

Allow from all

</Directory>

 

se deixar como acima deve funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Ludson, mas ainda não funcionou da maneira que preciso.

 

O problema não está nos links, não é o caso de criar URLs amigáveis. O problema envolve caminho dos arquivos! Vamos pegar o código abaixo como exemplo:

<a href="/link.php"><img src="/imagens/teste.jpg" alt="Teste" /></a>
Aqui temos um link para o arquivo link.php, cujo acesso será feito a partir da raiz do site (observe a barra antes do nome do arquivo; ela indica "a partir do root"). Além disso, temos uma imagem, que também está inserida a partir do root, dentro da pasta imagens. Pois bem, on-line, isso funciona perfeitamente, pois lá na minha pasta public_html eu teria os arquivos da maneira como deverão estar. Mas localmente acontece a mesma coisa? Não! Porque a barra que indica o root irá apontar para "D:\", e ali não existe nenhum arquivo link.php e nenhuma pasta chamada imagens! Eu precisaria indicar de alguma forma que o root, nesse caso, deveria ser alterado para uma pasta específica, por exemplo, preciso que a barra leve aqui:

D:\Projetos\Natura\

Pronto! É aqui que irá "começar" o site, aqui deve ser minha raiz, meu root! Mas é como eu falei, não posso alterar diretamente o httpd.conf, pois dentro da pasta Projetos há muitas outras, cada um com seu respectivo site, e então pensei na possibilidade de fazer isso com o .htaccess!

 

Consegue perceber a situação? :mellow:

 

Só preciso saber se é possível então alterar o <Directory> via .htaccess. Ah! O meu arquivo httpd.conf já está com o módulo RewriteEngine em on, e eu não utilizo o EasyPHP, eu instalei tudo manualmente (o EasyPHP aqui na minha máquina aparece uma mensagem de erro após o login no Windows... Tudo bem que mesmo assim, depois funcionava, mas aquela mensagem me irritava demais... :angry: ).

 

Aqui, quando você disse:

Deve-se mudar em < Directory "${path}/www" >… a diretiva AllowOverride None para AllowOverride All,

Cheguei a alterar aqui meu arquivo, mas não funciomou não. Veja como está meu arquivo httpd.conf:

#

# DocumentRoot: The directory out of which you will serve your

# documents. By default, all requests are taken from this directory, but

# symbolic links and aliases may be used to point to other locations.

#

DocumentRoot "D:/"

 

#

# Each directory to which Apache has access can be configured with respect

# to which services and features are allowed and/or disabled in that

# directory (and its subdirectories).

#

# First, we configure the "default" to be a very restrictive set of

# features.

#

<Directory />

Options FollowSymLinks

AllowOverride None <== Já alterei aqui para "All", mas não aconteceu nada

Order deny,allow

Deny from all

Satisfy all

</Directory>

 

#

# Note that from this point forward you must specifically allow

# particular features to be enabled - so if something's not working as

# you might expect, make sure that you have specifically enabled it

# below.

#

 

#

# This should be changed to whatever you set DocumentRoot to.

#

<Directory "D:/">

#

# Possible values for the Options directive are "None", "All",

# or any combination of:

# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

#

# Note that "MultiViews" must be named *explicitly* --- "Options All"

# doesn't give it to you.

#

# The Options directive is both complicated and important. Please see

# http://httpd.apache.org/docs/2.2/mod/core.html#options

# for more information.

#

Options Indexes FollowSymLinks Includes

 

#

# AllowOverride controls what directives may be placed in .htaccess files.

# It can be "All", "None", or any combination of the keywords:

# Options FileInfo AuthConfig Limit

#

AllowOverride None <== Cheguei a alterar aqui também para "All", mas dá um erro 500...

 

#

# Controls who can get stuff from this server.

#

Order allow,deny

Allow from all

 

</Directory>

Bom, por enquanto continuo na mesma... Alguém aqui trabalha com vários projetos também cujo localhost aponta para um "diretório central"? Alguém sabe me dizer se é possível definir o diretório root por meio de arquivos .htaccess?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, galera, não consegui encontrar uma solução para isso. O que eu estou fazendo é o seguinte, criei um arquivo PHP que usarei como include. Se estiver on-line, a tag <base /> é formada com uso de $_SERVER['HTTP_HOST']. Quando localmente, eu informo o caminho até a pasta do projeto à partir do root da máquina, a unidade D:, por exemplo.

// Tag: <base />
if($_SERVER['HTTP_HOST'] == "localhost")
{
	echo "<base href=\"http://" . $_SERVER['HTTP_HOST'] . "/Projetos/nome_do_projeto/\" />";
}
else
{
	echo "<base href=\"http://" . $_SERVER['HTTP_HOST'] . "/" . "\" />";
}
Para quem não conhece a tag <base />, ela me informa justamente à partir de onde os links e imagens estão sendo referenciados, dessa forma não preciso utilizar os dois pontos mais a barra (../) para voltar diretórios. Imagine que estou dentro de uma pasta que está dentro de outra. Se quiser linkar minha página com algum JS, por exemplo, que está no root, teria que fazer assim:

<script src="../../teste.js" type="text/javascript"></script>
Mas se eu tiver a tag <base /> definida como, por exemplo:

<base href="http://www.dominio.com.br/" />
Para eu chamar esse arquivo JS, bastaria eu colocar:

<script src="teste.js" type="text/javascript"></script>
E isso valeria também para qualquer link interno e imagens.

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.