A adição do VirtualHost falha: Acesso Proibido Erro 403 (XAMPP) (Windows 7)


161

Eu tenho uma instalação do XAMPP em execução no Windows 7.

Assim que adiciono um VirtualHost ao httpd-vhosts.conf, AMBOS 'regulares' http://localhostE os novos dropbox.local não estão funcionando.

Isto é o que eu adicionei ao meu httpd-vhosts.conf:

<VirtualHost *:80>
    ServerAdmin postmaster@dummy-host.localhost
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ServerAlias www.dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
</VirtualHost>

Então eu procurei o meu dropbox.local-error.logpara qualquer informação:

[Thu Feb 02 10:41:57 2012] [error] [client 127.0.0.1] client denied by server configuration: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

Este erro parece ser resolvido adicionando

<directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
     Allow from all
</directory>

Mas agora eu recebo esse erro em dropbox.local-error.log:

[Thu Feb 02 10:45:56 2012] [error] [client ::1] Directory index forbidden by Options directive: E:/Documenten/Dropbox/Dropbox/dummy-htdocs/

Além disso, quando tento acessar http://localhost, não recebo nenhum erro regularmente error.log, embora receba o error 403quando tento acessá-lo.

Alguém pode ajudar ... Está me deixando louco: S

EDIT: Também httpd.confhá o seguinte (eu já o vi mencionado várias vezes, então antes que alguém diga):

<IfModule dir_module>
    DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \
                   default.php default.pl default.cgi default.asp default.shtml default.html default.htm \
                   home.php home.pl home.cgi home.asp home.shtml home.html home.htm
</IfModule>

1
Eu obtive uma resposta, mas ainda não posso publicá-la :( reputação insuficiente: /
Highmastdon 02/02/12

Nenhuma dessas respostas funciona para mim :( #
318

Alguém por favor pode me ajudar aqui? Eu estou tentando conseguir a mesma coisa em MAMP stackoverflow.com/q/40405663/4480164
cyber8200

Respostas:


340

Ok: foi o que fiz agora e foi resolvido:

Minha httpd-vhosts.confaparência é agora:

<VirtualHost dropbox.local:80>
    DocumentRoot "E:/Documenten/Dropbox/Dropbox/dummy-htdocs"
    ServerName dropbox.local
    ErrorLog "logs/dropbox.local-error.log"
    CustomLog "logs/dropbox.local-access.log" combined
    <Directory "E:/Documenten/Dropbox/Dropbox/dummy-htdocs">
        # AllowOverride All      # Deprecated
        # Order Allow,Deny       # Deprecated
        # Allow from all         # Deprecated

        # --New way of doing it
        Require all granted    
    </Directory>
</VirtualHost>

Primeiro, vi que é necessário definir as <Directory xx:xx>opções. Então eu coloquei a <Directory > [..] </Directory>parte dentro da <VirtualHost > [..] </VirtualHost>. Depois disso, adicionei AllowOverride AuthConfig Indexesas <Directory>opções.

Agora http://localhosttambém aponta para o dropbox-virtualhost. Então eu adicionei dropbox.localpara <VirtualHost *:80>que o torna tão<VirtualHost dropbox.local:80>

FINALMENTE funciona: D!

Eu sou um homem feliz! :) :)

Espero que outra pessoa possa usar essas informações.


39
FWIW, fiz o mesmo e ainda tive problemas para acessar meu vhost. No entanto, adicionar Require all granteddepois Allow from allfez minha configuração funcionar.
Camilo Díaz Repka

O httpd-vhosts.confé um arquivo de configuração para o Apache. O Apache 'executa' o código php. Faça o download, instale xamppe altere a configuração conforme indicado acima.
Highmastdon 12/11/12

6
A partir do Apache 2.4, as diretivas de controle de acesso ordenam, permitem, negam e satisfazem . Certifique-se de estar executando uma versão inferior ao usar essas diretivas ou use Requer em vez disso.
Pascalculator

4
Como o @Pascalculator diz, use em Require all granted vez disso . Quero enfatizar o contrário, porque não estava funcionando quando eu tinha as outras opções na minha configuração, mas quando deixei apenas essa para trás, funcionou.
precisa saber é o seguinte

1
@davejal Muito obrigado e sem problemas :) Eu não quero ser um idiota sobre isso. Na verdade um pouco mais EQ pode ser bom aqui :)
Highmastdon

60

Para mim, trabalhei quando alterei o conteúdo do "diretório" para isso:

<Directory  "*YourLocation*">
Options All
AllowOverride All
Require all granted  
</Directory>

Apache 2.4.3 - agora trabalhando com a adição acima, além disso, tive os serviços Apache e MySQL "verificados" no Painel de Controle, o que estava causando o XAMPP CP parar de responder. Serviços não verificados - o Apache foi executado, mas o erro Acesso Proibido. Adicionadas as permissões acima, e ele funciona agora. Obrigado!!
Sean Kendle

2
Basicamente, isso - estava faltando a diretiva Opções. Options Indexes FollowSymLinksfoi tudo que eu precisava no Apache2.2, YMMV
Ed Orsi

Isso funcionou maravilhosamente para mim, em oposição à resposta selecionada. Por alguma razão, "Exigir tudo concedido" por si só, pois essa resposta sugere que não funcionou, pois travou o XAMPP instantaneamente. Mas essa resposta funcionou com aqueles entre <diretório>, então obrigado pela resposta.
Scrydan

Alguém por favor pode me ajudar aqui? Eu estou tentando conseguir a mesma coisa em MAMP stackoverflow.com/q/40405663/4480164
cyber8200

SOMENTE Options Allfuncionou para mim! É o ingrediente que falta!
Theodore R. Smith

10

Para mim (também XAMPP no Windows 7), foi o que funcionou:

<Directory "C:\projects\myfolder\htdocs">`
   AllowOverride All
   Require all granted
   Options Indexes FollowSymLinks
</Directory>` 

É essa linha que causaria o 403:

Order allow,deny

.htaccess não estava funcionando até que eu mudei para sua resposta, obrigado.
ssi-anik

quando index.html estiver ausente e você quiser apenas mostrar todas as páginas nesta pasta, você poderá adicionar apenas o seguinte na diretiva <Directory>: Require all grantedeOptions Indexes FollowSymLinks
tatskie

8

Estou usando o XAMPP 1.6.7 no Windows 7. Este artigo funcionou para mim.

Eu adicionei as seguintes linhas no arquivo httpd-vhosts.confem C:/xampp/apache/conf/extra.
Eu também tinha descomentado a linha# NameVirtualHost *:80

<VirtualHost mysite.dev:80>
    DocumentRoot "C:/xampp/htdocs/mysite"
    ServerName mysite.dev
    ServerAlias mysite.dev
    <Directory "C:/xampp/htdocs/mysite">
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Depois de reiniciar o apache, ele ainda não estava funcionando. Então eu tive que seguir a etapa 9 mencionada no artigo editando o arquivo C:/Windows/System32/drivers/etc/hosts.

# localhost name resolution is handled within DNS itself.
     127.0.0.1       localhost
     ::1             localhost
     127.0.0.1       mysite.dev  

Então eu comecei a trabalhar http://mysite.dev


Isso realmente ajudou. Muito obrigado. você salvou meu dia. :)
Abhishek Goel

6

Obrigado, isso funcionou! Mas eu substituí isso

AllowOverride AuthConfig Indexes

com isso

AllowOverride All

Caso contrário, o .htaccess não funcionaria: eu tive problemas com o RewriteEngine e a mensagem de erro "RewriteEngine não é permitido aqui".


3

As sugestões acima não funcionaram para mim. Eu consegui rodar no Windows, usando a inspiração de http://butlerccwebdev.net/support/testingserver/vhosts-setup-win.html

Para Http dentro do httpd-vhosts.conf

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:80>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

Para usar Https (Open SSL) dentro do httpd-ssl.conf

<Directory "D:/Projects">       
AllowOverride All
Require all granted
</Directory>

##Letzgrow
<VirtualHost *:443>
DocumentRoot "D:/Projects/letzgrow"
ServerName letz.dev
ServerAlias letz.dev    
</VirtualHost>

Espero que ajude alguém !!


2

Depois de tantas mudanças, tentativas e respostas. Para

SOs: Windows 7 / Windows 10

Versão Xampp: Xampp ou Xampp portable 7.1.18 / 7.3.7 (painel de controle v3.2.4)

Instaladores: win32-7.1.18-0-VC14-installer / xampp-windows-x64-7.3.7-0-VC15-installer

  1. Não edite outros arquivos como o httpd-xampp

  2. Stop Apache

  3. Abrir httpd-vhosts.conf localizado no **your_xampp_directory**\apache\conf\extra\(seu diretório XAMPP pode ser por padrão: C:/xampp/htdocs)

  4. Remova o hash antes da seguinte linha (aprox. Linha 20): NameVirtualHost *:80(isso pode ser opcional)

  5. Adicione os seguintes hosts virtuais no final do arquivo, considerando os caminhos dos diretórios:

    ##127.0.0.1
    <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs"
        ServerName localhost
        ErrorLog "logs/localhost-error.log"
        CustomLog "logs/localhost-access.log" common
    </VirtualHost>
    
    ##127.0.0.2
    <VirtualHost *:80>
        DocumentRoot "F:/myapp/htdocs/"
        ServerName test1.localhost
        ServerAlias www.test1.localhost
        ErrorLog "logs/myapp-error.log"
        CustomLog "logs/myapp-access.log" common
        <Directory  "F:/myapp/htdocs/">
            #Options All # Deprecated
            #AllowOverride All # Deprecated
            Require all granted  
        </Directory>
    </VirtualHost>
    
  6. Edite (com acesso de administrador) seu arquivo host (localizado em Windows\System32\drivers\etc, mas com a dica a seguir, apenas um ip de loopback para cada domínio :

    127.0.0.1 localhost
    127.0.0.2 test1.localhost
    127.0.0.2 www.test1.localhost
    

Para cada instância, repita o segundo bloco, o primeiro é o bloco principal apenas para fins "padrão".


1
Definir endereços IP diferentes para cada host virtual funcionou! Ao contrário do WAMP, porém, o XAMP não interpreta o nome de cada servidor quando todos estão agrupados em um endereço IP (por exemplo 127.0.0.1 localhost,test1.localhost).
CPHPython

@CPHPython, obrigado por mencionar as diferenças e melhorar minha resposta. Feliz em ajudar! Lembro-me lutou muito com esta questão
Leandro

1
obrigado, prazer em ajudar também! Antes de encontrar sua resposta, passei um bom tempo tentando descobrir por que os hosts do Windows não estavam refletindo os nomes dos servidores.
CPHPython

0

Estou usando o xampp 1.7.3. Usando inspiração a partir daqui: xampp 1.7.3 atualize o acesso de hosts virtuais interrompidos proibido

Em vez de adicionar <Directory> .. </Directory>no httpd-vhosts.conf , eu o adiciono no httpd.conf logo depois <Directory "D:/xampplite/cgi-bin"> .. </Directory>.

Aqui está o que eu adiciono no httpd.conf:

<Directory "D:/CofeeShop">
    AllowOverride All
    Options  All
    Order allow,deny
    Allow from all
</Directory>

E aqui está o que eu adiciono no httpd-vhosts.conf

<VirtualHost *:8001>
    ServerAdmin postmaster@dummy-host2.localhost
    DocumentRoot "D:/CofeeShop"
    ServerName localhost:8001
</VirtualHost>

Também adiciono o Listen 8001httpd.conf para concluir minha configuração.

Espero que ajude


0

Para muitos, é uma questão de permissão, mas, para mim, o erro foi causado por um erro no formulário que eu estava tentando enviar. Para ser específico, acidentalmente coloquei um sinal "maior que" após o valor de "ação". Então, eu sugiro que você dê uma segunda olhada no seu código.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.