Pergunta

Estou construindo um aplicativo da Web com a Zend Framework e preciso apontar meu aplicativo para a pasta "pública" do aplicativo:

Então, basicamente, quando eu ligo http://localhost/myappdeve ser exibido http://localhost/myapp/public/

Eu criei um arquivo de host virtual chamado myApp em/etc/apache2/sites-anable/:

    <VirtualHost *:80>
DocumentRoot /var/www/myapp/public/
 <Directory />
  Options FollowSymLinks
  AllowOverride None
 </Directory>
 <Directory /var/www/myapp/>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride None
  Order allow,deny
  allow from all
 </Directory>

</VirtualHost>

Mas não funciona. Quando eu ligo http: // localhost/myapp, Ele exibe a estrutura do diretório do aplicativo e, quando clico na pasta "público", ele exibe o que quero ser exibido por padrão ... Eu nunca configurei o VHOSTS antes e isso é o mais longe possível com os tutoriais sobre isso.

Foi útil?

Solução 2

Ok, encontrei um caminho de alguma forma ... não acho que seja necessário da maneira certa/melhor, mas ...

em httpd.conf (na pasta Apache2):

Listen 10089

<VirtualHost *:10089>

    DocumentRoot "/var/www/myapp/public"

    <Directory "/var/www/myapp/public">

        Order allow,deny

        Allow from all

    AllowOverride all

</Directory>

</VirtualHost>

Meu aplicativo agora está acessível via localhost: 10089 Depois de ativar o mod de reescrita no Apache, adicionei o .htaccess necessário, um na raiz do meu aplicativo, redirecionando tudo para index.php (Zend Framework Apoio a navegação de URL e obras de URL) :

RewriteEngine on

RewriteRule .* index.php

e um segundo arquivo .htaccess dentro da minha pasta pública para permitir que as pessoas acessem os arquivos .jpg, .ico, etc e não sejam redirecionados para indexar para tudo:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [NC,L]

RewriteRule ^.*$ /index.php [NC,L]

Espero que isso ajude alguns!

Outras dicas

Na sua primeira listagem, você tinha um valor diferente para a etiqueta do diretório, deixando de fora o 'público'. Houve também uma barra atrás do 'público' no valor do Docroot, mas removido em sua segunda tentativa. Não tenho certeza se isso fez a diferença, mas acredito que é recomendável que você não inclua barras à direita.

Além disso, apenas se perguntando ... você está executando isso em uma máquina local? Tive problemas com o Skype querendo usar a porta 80 se eu comecei a executá -lo antes do meu servidor Apache. O Skype usará uma porta diferente se 80 já estiver usado. Caso contrário, o Skype, pode haver outro aplicativo que está usando a porta 80 e interferindo. Pode ser por isso que você teve sucesso em outro porto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top