URL para o mapeamento do sistema de arquivos no Apache

1

Eu tenho um blog que está em mysite.tld/blog . Atualmente, mysite.tld redireciona para mysite.tld/blog por meio de index.php na raiz. Aparentemente, quando eu configurei isso dois anos atrás, eu não consegui obter o arquivo .httaccess que também está na raiz para funcionar. No sistema de arquivos, meu blog está em /var/www/blog .

Agora, criei um site simples que gostaria de ter exibido em mysite.tld . Ele funciona através de um microframework PHP que serve páginas através de um arquivo index.php . Eu tenho este site em um repositório git, e neste repositório o index.php está localizado em www/index.php . Eu gostaria de ter apenas um clone do repo no meu servidor para que eu possa puxar para atualizar para uma nova versão. Então, supondo que eu clonar como site em /var/www , o ponto de entrada termina em /var/www/site/www/index.php .

Eu passei as últimas 3 horas tentando fazer essa coisa incrivelmente simples funcionar, sem sucesso. Tudo o que quero fazer é mapear o URL /blog para /var/www/blog e o restante da URL / para /var/www/site/index . Qual é a configuração mágica que preciso para isso?

Aqui está a saída de lsb_release -a :

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:        14.04
Codename:       trusty

Aqui está a saída de apache2ctl -V :

Server version: Apache/2.4.7 (Ubuntu)
Server built:   Jul 22 2014 14:36:38
Server's Module Magic Number: 20120211:27
Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

Aqui está a saída de apache2ctl -M :

Loaded Modules:
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_groupfile_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 filter_module (shared)
 mime_module (shared)
 mpm_prefork_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 rewrite_module (shared)
 setenvif_module (shared)
 status_module (shared)
    
por Jeroen De Dauw 11.03.2015 / 06:04

1 resposta

3

All I want to do is map URL /blog to /var/www/blog and the remainder of URL / to /var/www/site/index. What is the magical configuration I need for this?

Você pode fazer isso facilmente com diretiva Alias do Apache como esta. Note que vejo que você está usando o Apache 2.4.7, que pode ter uma sintaxe ligeiramente diferente do Apache 2.2 e anterior, na qual este conselho é baseado. Mas dito isso, enquanto a sintaxe pode ser um pouco diferente, mas os conceitos gerais ainda são os mesmos e estou bastante confiante de que o Apache 2.4 ainda tem a funcionalidade Alias .

Esses itens seriam definidos no arquivo de configuração do Apache do seu site principal, que estaria em /etc/apache2/sites-available/ . Agora eles podem estar em um arquivo chamado /etc/apache2/sites-available/default ou em um arquivo separado para o nome do host como /etc/apache2/sites-available/mysite.tld , portanto, verifique sua configuração antes de modificar radicalmente os arquivos.

Isso definiria todas as solicitações para http://mysite.tld/blog para obter conteúdo de /var/www/blog :

Alias /blog /var/www/blog

Isso definiria todas as solicitações para http://mysite.tld/ para obter conteúdo de /var/www/site/index :

Alias / /var/www/site/index

Agora, você só precisa do Alias /blog /var/www/blog ; esse segundo Alias / /var/www/site/index pode não ser necessário, desde que seu DocumentRoot esteja definido como /var/www/site/index .

Uma visão geral boa, simples e concisa de como as configurações de configuração do Apache funcionam pode ser encontrado neste site .

    
por 11.03.2015 / 06:29