No Apache/local, como posso oferecer suporte ao acesso ao diretório e ao acesso ao host nomeado?

No Apache/local, como posso oferecer suporte ao acesso ao diretório e ao acesso ao host nomeado?

Eu entendo como usar as diretivas Directory e (eu acho) VirtualHost. Entendo ainda que não posso misturá-los (embora possa aninhá-los). Quando eu os misturo, recebo 404 não encontrado para os URLs do tipo diretório que costumavam funcionar.

Como, então, posso oferecer suporte à navegação em URLs como "localhost/my/website" e também "mydomainname.com" em meu arquivo de configuração?

Minha justificativa: quero fazer com que mydomainname.com use https enquanto mantenho meus outros sites usando http. Já tenho mydomainname.com traduzido para 127.0.0.1 em meu arquivo HOSTS (meu DNS local), então acho que devo estar perto de uma solução.

Estou trabalhando nisso há horas e realmente não cheguei a lugar nenhum. A documentação do Apache não está me ajudando.

Idealmente, alguém poderia esboçar para mim como conseguir o que desejo.

Responder1

Com base na pergunta, acho que você não entende a diferença entre Directorye VirtualHost.

<Directory>e </Directory>são usados ​​para incluir um grupo de diretivas que serão aplicadas apenas ao diretório nomeado, subdiretórios desse diretório e aos arquivos dentro dos respectivos diretórios.

<VirtualHost>e </VirtualHost>são usados ​​para incluir um grupo de diretivas que serão aplicadas apenas a um host virtual específico. Qualquer diretiva permitida em um contexto de host virtual pode ser usada. Quando o servidor recebe uma solicitação de um documento em um host virtual específico, ele usa as diretivas de configuração incluídas na <VirtualHost>seção.

A <Directory>diretiva não controla "URLs do tipo de diretório".ODocumentRoote aAliasAs diretivas controlam onde o conteúdo é encontrado no sistema de arquivos. Essas diretivas podem ser usadas diretamente na configuração do servidor ou dentro de um arquivo <VirtualHost>.

Para o que você está tentando alcançar, você simplesmente precisa de dois <VirtualHost>s com DocumentRoots diferentes, por exemplo

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/examplecom"
    ServerName example.com
</VirtualHost>

Agora, você tem ambos http://localhost/examplecom/para http://example.com/o mesmo site. Se os sites não estiverem todos no mesmo diretório do sistema de arquivos, você precisará usar Aliases, por exemplo

Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www"
    ServerName localhost

    Alias "/examplecom" "/home/user/sites/example.com"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/home/user/sites/example.com"
    ServerName example.com
</VirtualHost>

informação relacionada