Eu tenho um blog que está em mysite.tld/blog
. Atualmente mysite.tld
redireciona para mysite.tld/blog
via an index.php
na raiz. Aparentemente, quando configurei isso há dois anos, não consegui fazer o .httaccess
arquivo que também está na raiz funcionar. No sistema de arquivos, meu blog está em /var/www/blog
.
Agora eu crio um site simples que gostaria que aparecesse mysite.tld
. Funciona por meio de um microframework PHP que atende páginas por meio de um index.php
arquivo. Eu tenho este site em um repositório git e neste repositório está index.php
localizado em www/index.php
. Eu gostaria de ter apenas um clone do repositório em meu servidor para poder atualizar para uma nova versão. Então, supondo que eu o clone como site
em /var/www
, o ponto de entrada termina em /var/www/site/www/index.php
.
Passei as últimas 3 horas tentando fazer essa coisa incrivelmente simples funcionar, sem sucesso. Tudo o que quero fazer é mapear o URL /blog
e /var/www/blog
o restante do 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)
Responder1
Tudo o que quero fazer é mapear o URL
/blog
e/var/www/blog
o restante do URL/
para/var/www/site/index
. Qual é a configuração mágica que preciso para isso?
Você pode fazer isso facilmente comAlias
Diretiva do Apacheassim. Observe que vejo que você está usando o Apache 2.4.7, que pode ter uma sintaxe ligeiramente diferente do Apache 2.2 e anteriores, na qual este conselho se baseia. Mas dito isso, embora a sintaxe possa ser um pouco diferente, os conceitos gerais ainda são os mesmos e estou bastante confiante de que o Apache 2.4 ainda tem Alias
funcionalidade.
Esses itens seriam definidos no arquivo de configuração Apache do seu site principal, que estaria no formato /etc/apache2/sites-available/
. Agora eles podem estar em um arquivo nomeado /etc/apache2/sites-available/default
ou em um arquivo separado para o nome do host, /etc/apache2/sites-available/mysite.tld
portanto, certifique-se de verificar sua configuração antes de modificar radicalmente os arquivos.
Isso definiria todas as solicitações para http://mysite.tld/blog
obter conteúdo de /var/www/blog
:
Alias /blog /var/www/blog
Isso definiria todas as solicitações para http://mysite.tld/
obter conteúdo de /var/www/site/index
:
Alias / /var/www/site/index
Dito isso, talvez você só precise do Alias /blog /var/www/blog
; esse segundo Alias / /var/www/site/index
pode não ser necessário, desde que esteja DocumentRoot
definido como /var/www/site/index
.
Uma visão geral boa, simples e concisa de como funcionam as configurações do Apachepode ser encontrado neste site.