O Apache exibe "Página padrão" ao usar https: //www.example, mas funciona para https: // example

0

Estou tendo problemas com minha configuração do Apache e não consigo que ela exiba meu aplicativo principal quando eu insiro o URL que inclui a WWW ( link ) mas funciona bem quando eu não ( link ).

Eu tentei adicionar as linhas individuais:

  • ServerAlias www.example.com
  • ServerAlias * example.com

para todos os VirtualHosts, mas isso não fez diferença.

Em meus testes, vejo os redirecionamentos funcionando, mas só consigo acessar o site principal por meio de determinados URLs:

Eu queria saber se alguém poderia me ajudar a resolver isso para que eu possa bater no meu mainsite de qualquer URL. Também tenho que demonstrar este site para um cliente muito em breve e estou lutando por uma solução!

Aqui está minha configuração do Apache:

000-default-conf

<VirtualHost *:80>
    Alias /static /home/user/project_1/static
    <Directory /home/user/project_1/static>
        Require all granted
    </Directory>

   ServerName example.com

   Redirect permanent / https://example.com/
</VirtualHost>

default-ssl.conf

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/html
        Alias /static /var/www/example.com/static

        <Directory /home/user/project_1/static>
            Require all granted
        </Directory>

        Alias /media /home/user/project_1/media
        <Directory /home/user/project_1/media>
            Require all granted
        </Directory>

        ...
        ...

        <Directory /home/user/project_1/mywebapp>
            <Files wsgi.py>
                Require all granted
            </Files>
        </Directory>

        WSGIDaemonProcess user python-home=/home/user/project_1/env_mywebapp python-path=/home/user/project_.......

        WSGIProcessGroup mywebapp
        WSGIScriptAlias / /home/user/project_1/mywebapp/wsgi.py

        ServerName      example.com

        SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

        Include /etc/letsencrypt/options-ssl-apache.conf
    </VirtualHost>
</IfModule>

le-redirect-example.com.conf (Criado por vamos criptografar o certbot)

<VirtualHost _default_:80>
    ServerName example.com

    ServerSignature Off

    RewriteEngine On
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    ErrorLog /var/log/apache2/redirect.error.log
    LogLevel warn
</VirtualHost>

Obrigado pela sua ajuda!

[ATUALIZAÇÃO]

Aqui está a saída da execução do comando "curl -I"

root@host1:~# curl -I www.example.com
HTTP/1.1 301 Moved Permanently
Date: Mon, 16 Apr 2018 18:23:20 GMT
Server: Apache/2.4.18 (Ubuntu)
Location: https://example.com/
Content-Type: text/html; charset=iso-8859-1
root@host1:~# curl -I example.com
HTTP/1.1 301 Moved Permanently
Date: Mon, 16 Apr 2018 18:24:31 GMT
Server: Apache/2.4.18 (Ubuntu)
Location: https://example.com/
Content-Type: text/html; charset=iso-8859-1
root@host1:~# curl -I https://example.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2018 18:25:23 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Cookie,Accept-Encoding
X-Frame-Options: SAMEORIGIN
Set-Cookie: csrftoken=zxxxxxxxxxxxxxxxxxxxxxzBcrBOvUDUdxxxxxxxxxxxxxxxx; expires=Mon, 15-Apr-2019 18:25:23 GMT; Max-Age=31449600; Path=/
Content-Type: text/html; charset=utf-8
root@host1:~# curl -I https://www.example.com
HTTP/1.1 200 OK
Date: Mon, 16 Apr 2018 18:26:15 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Tue, 03 Jan 2017 02:48:33 GMT
ETag: "1234-12347b43...."
Accept-Ranges: bytes
Content-Length: 11321
Vary: Accept-Encoding
Content-Type: text/html
    
por Logic1 16.04.2018 / 05:50

1 resposta

1

Você tem isso na sua configuração:

ServerName example.com

Isso corresponde a example.com, mas não a www.example.com. São dois nomes diferentes. Se você usar https (como faz, com base na configuração), também precisará de um certificado com vários nomes, curinga ou certificados separados para example.com e www.example.com.

Use ServerAlias www.example.com para adicionar um alias ao nome do servidor. Isso também está documentado na excelente documentação do apache , que deve ser a primeira parada quando algo não está funcionando:

When a request arrives, the server will find the best (most specific) matching argument based on the IP address and port used by the request. If there is more than one virtual host containing this best-match address and port combination, Apache will further compare the ServerName and ServerAlias directives to the server name present in the request.

    
por vidarlo 16.04.2018 / 06:25