2012-06-02 17 views
11

Wampserver indica che l'accesso è stato negato quando si tenta di creare un host virtuale all'esterno della directory c:/wamp/www /. Posso fare una multa in quella directory. Anche fare un collegamento simbolico alla cartella funziona, ma preferirei non dover usare collegamenti simbolici. Perché non funziona?Wampserver 403 su host virtuali denominati all'esterno di/www

ecco il codice che uso alla fine del httpd.conf

NameVirtualHost *:80 

<VirtualHost *:80> 
DocumentRoot "c:/wamp/www" 
ServerName localhost 
ServerAlias localhost 
</VirtualHost> 

<VirtualHost *:80> 
ServerName local.cascade 
DocumentRoot c:/wamp/www/cascade/ 
</VirtualHost> 

<VirtualHost *:80> 
ServerName local.md9 
ServerAlias local.md9 
DocumentRoot "m:/Work/New MD9.ca/site/" 
</VirtualHost> 

<Directory "m:/Work/New MD9.ca/site/"> 
    Order Allow,Deny 
    Allow from All 
</Directory> 

VH "a cascata" funziona bene.

+0

fare le autorizzazioni del file system consentono l'accesso? – sarnold

+0

Sicuro perché no? Cosa serve il permesso? – Moss

+0

Non tutti i sistemi consentono all'account utente del server Web di accedere a tutto per impostazione predefinita. – sarnold

risposta

26

Suppongo che avrei dovuto esaminare più attentamente http.conf. Non è così lungo, per lo più commenti. La parte problematica era questa.

# Deny access to the entirety of your server's filesystem. You must 
# explicitly permit access to web content directories in other 
# <Directory> blocks below. 
# 

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

Ho commentato e ora roba funziona, anche se suppongo che sia meno sicuro, ma è solo un server di test.

Pensavo che il bit <Directory "m:/Work/New MD9.ca/site/"> avrebbe dovuto occuparsene ma non credo.

+0

Ottima soluzione! Ho anche trovato questo qui 'http: // reanweb.com/wordpress/step-step-guida-creare-virtual-host-con-WAMP/'. Nel caso qualcuno tenti di trovare l'intero processo –

+2

@Moss, anche se non sei preoccupato per la sicurezza in quanto è un server di prova, ma vorrei menzionare per altri che puoi lasciare quel tag di directory senza commento e un altro tag di directory con percorso a la tua cartella web di vhost, ma usa "AllowOverride all" invece di "AllowOverride none", che la renderebbe sicura e utilizzabile. – Patriks

3

Il tag <Directory> dovrebbe essere all'interno del <VirtualHost *:80>

come questo:

<VirtualHost *:80> 
ServerName local.md9 
ServerAlias local.md9 
DocumentRoot "m:/Work/New MD9.ca/site/" 
    <Directory "m:/Work/New MD9.ca/site/"> 
     Order Allow,Deny 
     Allow from All 
    </Directory> 
</VirtualHost> 

Si noti inoltre che per l'esterno la cartella predefinita www si dovrebbe usare require invece di permettere

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 
18

I sapere che la domanda è vecchia ora e hai funzionato, ma mi sono imbattuto in questo problema e l'ho risolto senza rimuovere loTag.

È sufficiente aggiungere un tag Require local (o Require all per l'accesso online) al tag Directory. per esempio.

<VirtualHost *:80> 
    ServerName local.md9 
    ServerAlias local.md9 
    DocumentRoot "m:/Work/New MD9.ca/site/" 

    <Directory "m:/Work/New MD9.ca/site/"> 
     Order Allow,Deny 
     Allow from All 
     Require local 
    </Directory> 
</VirtualHost> 

si può vedere la stessa regola dichiarato nella directory DocumentRoot in httpd.conf

5

Ho avuto lo stesso problema, ma sono riuscito a risolvere dopo aver guardato a questa domanda.

Tuttavia, la risposta accettata forse non è la soluzione migliore, a seconda di quanto sicuro si desidera la configurazione di Apache.

Penso che la soluzione dovrebbe menzionare due cose, in primo luogo garantire la sicurezza non è compromessa e secondo; comprendere la differenza nella configurazione del controllo di accesso tra le versioni 2.2 e 2.4 di Apache.

sicurezza Garantire non è compromessa

Commentando le linee suggerite:

<Directory /> 
    AllowOverride none 
    Require all denied 
</Directory> 

significa che rimuove la sicurezza rigorosa predefinita applicata a tutte le directory sulla vostra macchina, se ho capito bene. Qualcun altro potrebbe creare una configurazione che punta alla tua directory C:\very\sensitive\information e pubblicare il contenuto da lì a un sito web (che è più probabile che sia un problema su un host condiviso).È interessante notare che il seguente commento è fatto sopra quel blocco:

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

Poi sotto di quel blocco:

# 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. 

Ha senso completo per bloccare tutto giù, poi condizionalmente sbloccare per directory.

Mi è venuto in mente il seguente che indica la posizione sulla mia macchina in cui vivranno tutti i miei siti Web (serviti dagli host virtuali Apache). Questo segue immediatamente il blocco <Directory "d:/wamp/www/"></Directory>.

Quindi all'interno di ogni configurazione/alias host virtuali è possibile impostare la configurazione applicabile a tale directory.

differenza nella configurazione di controllo di accesso

Configurazione del controllo di accesso nelle versioni più recenti di Apache è cambiata.

Che usato per essere:

Order allow,deny 
Allow from all 

ora dovrebbe essere:

Require all granted 

Per maggiori informazioni: http://httpd.apache.org/docs/current/upgrading.html

+0

il 'Require all granted' ha fatto il trucco per me –

1

Se si è tentato tutto il .conf modifiche sopra e nessuno ha lavorato, provare i seguenti passaggi aggiuntivi:

1) Assicurarsi che DocumentRoot e < Directory> locations sono le stesse!

2) verifica doppia "ServerName" spelling dominio all'interno i tag < VirtualHost>, e controllare anche l'ortografia del dominio è la stessa nel file HOST (windows \ system32 \ drivers \ etc \ hosts):

Esempio :

<VirtualHost *:80> 
    DocumentRoot "D:/vhost_directory/website_directory" 
    ServerName mywebsite.local 
    <Directory "D:/vhost_directory/website_directory"> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
    </Directory> 
</VirtualHost> 

3) Controllare i file conf sintassi:

errori di file conf
cd \wamp\bin\apache\apache2.4.9\bin 
httpd -t 

4) Fix fino ad ottenere l'output:

Syntax OK 

5) aggiornamento della cache nome di dominio (deve eseguire console come amministratore):

net stop dnscache 
net start dnscache 

6) Riavviare il servizio Apache o riavviare tutti i servizi su WAMP

Problemi correlati