Apache2 Alias ignorado: “Arquivo não existe” apesar de não haver nenhuma barra final e reescrita habilitada

0

No Apache2 padrão do Ubuntu 2016.04, tentei adicionar um host virtual com um alias:

sudo mkdir /var/www/simplesamlphp
echo "Hello" > /var/www/simplesamlphp/index.html (as root)
sudo chown -R www-data:www-data /var/www/simplesamlphp
sudo chmod -R 755 /var/www

Em segundo lugar, criei /etc/apache2/sites-available/simplesamlphp.conf :

<VirtualHost *>
    ServerName simplesamlphp
    DocumentRoot /var/www/simplesamlphp

    SetEnv SIMPLESAMLPHP_CONFIG_DIR /var/simplesamlphp/config

    Alias /simplesaml /var/simplesamlphp/www

    <Directory /var/simplesamlphp/www>
        <IfModule !mod_authz_core.c>
        # For Apache 2.2:
        Order allow,deny
        Allow from all
        </IfModule>
        <IfModule mod_authz_core.c>
        # For Apache 2.4:
        Require all granted
        </IfModule>
    </Directory>
</VirtualHost>

Em terceiro lugar, adicionei esta linha a /etc/hosts :

127.0.0.1       simplesamlphp

Quarto, eu corri:

sudo a2enmod rewrite
sudo a2ensite simplesamlphp.conf
sudo service apache2 restart

PROBLEMA: acessando http://simplesamlphp/simplesamlThe requested URL /simplesaml was not found on this server e o seguinte aparece em /var/log/apache2/error.log :

AH00128: File does not exist: /var/www/html/simplesaml

O que fiz de errado?
A propósito, estou seguindo estas instruções . Na verdade, não sei por que um DocumentRoot é necessário, apesar de todo o conteúdo da web estar em /var/simplesamlphp/www .

    
por Nicolas Raoul 25.11.2016 / 12:15

1 resposta

1

Nota aos leitores: Por favor, leia os comentários de Henning Kockerbeck. A funcionalidade de hosts virtuais do Apache 2.4 está bem descrita no guia oficial . A resposta a seguir está desatualizada.

A melhor explicação do funcionamento do procedimento é a seguinte (da documentação ):

% bl0ck_qu0te%

Se você não tiver desativado o site padrão 000-default , agora você tem duas declarações <VirtualHost *> e a padrão não é baseada em nome. O Apache não consegue distinguir entre eles e, para resolver a ambiguidade, simplesmente ignora o segundo. Você pode prosseguir de três maneiras diferentes:
  • Você pode optar por desativar o site padrão ou
  • Você pode optar por fazer com que seu novo host virtual ouça em uma porta diferente ou
  • Você pode optar por converter o site padrão em um host virtual baseado em nome editando 000-default.conf , removendo o comentário da diretiva ServerName e atribuindo um nome diferente a ela.
por AlexP 25.11.2016 / 12:38