Aliases fora da raiz da web dentro do .htaccess

1

TL;DR: Is there any way to have a domain's sub-directory http://company.com/subdir point to a directory outside the web root using only .htaccess with no access to the server's configuration?

Eu tenho um site company.com que executa três cópias específicas do país de um CMS em um pacote de hospedagem compartilhada (Apache 2, PHP 5).

O CMS é dividido em dois diretórios:

/app      <----- Non-public content, to be placed outside the web root
/htdocs   <----- Public content

Eu gostaria de ter cada um dos três CMSs específicos do país como subdiretórios para o domínio principal:

www.company.com/de/  <-- 1st copy
www.company.com/ch/  <-- 2nd copy
www.company.com/at/  <-- 3rd copy

o problema óbvio com essa estrutura, cada diretório /app do CMS precisaria ser colocado em um local separado fora da raiz da web. No entanto, por motivos de manutenção (estou passando meus projetos para outra empresa), gostaria de evitar isso.

A solução ideal para mim é que cada cópia do CMS resida em um diretório fora da raiz da Web:

/htdocs <------- public web root

/de/app
/de/htdocs
/ch/app
/ch/htdocs
/at/app
/at/htdocs

garantindo assim que o diretório app não possa ser acessado de fora.

Cada diretório htdocs público do CMS será disponibilizado para o mundo de forma seletiva usando uma diretiva Alias :

Alias /de ../de/htdocs
Alias /ch ../ch/htdocs
Alias /at ../at/htdocs

Mas isso não é possível de .htaccess (obtenho um erro 500), onde não é possível especificar Alias diretivas e, até onde eu sei, mod_rewrite diretivas só podem especificar destinos dentro da raiz da web (correto?)

Tanto quanto eu posso ver, o que eu quero fazer é impossível de fazer em um ambiente de hospedagem compartilhada, mas eu pensei em verificar se alguém aqui tem alguma idéia, como seria um enorme alívio para eu poder fazer isso dessa maneira.

Eu posso colocar um .htaccess no diretório pai (um nível acima da raiz da web), mas isso não parece mudar nada.

Espero que seja claro o suficiente. Se não for, por favor, deixe-me saber e eu vou esclarecer.

Mudar de uma hospedagem compartilhada não é uma opção, mas também não está pedindo à empresa de hospedagem que relaxe as regras - elas são muito boas no que fazem, mas também muito rigorosas e conservadoras sobre personalizações individuais .

Deixar cada diretório app na raiz da web e bloquear o acesso a ele usando Deny from all ou similar também não é uma opção.

    
por Pekka 웃 04.02.2011 / 18:25

1 resposta

2

A diretiva "Alias" não é permitida nos arquivos .htaccess. De acordo com o link , "Alias" só é permitido em "configuração do servidor, host virtual" . É por isso que você recebe um erro 500 quando o define no contexto .htaccess.

É útil revisar o sinalizador de contexto no manual do apache quando você tem um erro no servidor, se não tiver certeza do contexto adequado à sua diretiva.

Acho que você pode conseguir isso facilmente com alguns links simbólicos, se o seu host permitir o FollowSymlinks:

/htdocs/de -> /de/htdocs
/htdocs/ch -> /ch/htdocs
/htdocs/at -> /at/htdocs
    
por 04.02.2011 / 18:44