Mapeo de URL al sistema de archivos en Apache

Mapeo de URL al sistema de archivos en Apache

Tengo un blog que está en mysite.tld/blog. Actualmente mysite.tldredirige a mysite.tld/blogtravés de un index.phpen la raíz. Aparentemente, cuando configuré esto hace dos años, no pude hacer .httaccessfuncionar el archivo que también está en la raíz. En cuanto al sistema de archivos, mi blog está en /var/www/blog.

Ahora creo un sitio web sencillo en el que me gustaría que apareciera mysite.tld. Funciona a través de un microframework PHP que sirve páginas a través de un index.phparchivo. Tengo este sitio en un repositorio de git, y en este repositorio está index.phpubicado en www/index.php. Me gustaría tener un clon del repositorio en mi servidor para poder actualizarlo a una nueva versión. Entonces, suponiendo que lo clono como siteen /var/www, el punto de entrada termina en /var/www/site/www/index.php.

He pasado las últimas 3 horas intentando que esta cosa increíblemente simple funcione, sin éxito. Todo lo que quiero hacer es asignar la URL /blogy /var/www/blogel resto de la URL /a /var/www/site/index. ¿Cuál es la configuración mágica que necesito para esto?

Aquí está el resultado de lsb_release -a:

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

Aquí está el resultado 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"

Aquí está el resultado 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)

Respuesta1

Todo lo que quiero hacer es asignar la URL /blogy /var/www/blogel resto de la URL /a /var/www/site/index. ¿Cuál es la configuración mágica que necesito para esto?

Puedes hacer esto fácilmente conAliasdirectiva de apachecomo esto. Tenga en cuenta que veo que está utilizando Apache 2.4.7, que podría tener una sintaxis ligeramente diferente a la de Apache 2.2 y versiones anteriores en las que se basa este consejo. Pero dicho esto, si bien la sintaxis puede ser ligeramente diferente, los conceptos generales siguen siendo los mismos y estoy bastante seguro de que Apache 2.4 todavía tiene Aliasfuncionalidad.

Estos elementos se configurarían en el archivo de configuración de Apache de su sitio principal, que estaría en formato /etc/apache2/sites-available/. Ahora pueden estar en un archivo con nombre /etc/apache2/sites-available/defaulto en un archivo separado para el nombre de host, /etc/apache2/sites-available/mysite.tldasí que asegúrese de verificar su configuración antes de modificar radicalmente los archivos.

Esto configuraría todas las solicitudes para http://mysite.tld/blogobtener contenido de /var/www/blog:

Alias /blog /var/www/blog

Esto configuraría todas las solicitudes para http://mysite.tld/obtener contenido de /var/www/site/index:

Alias / /var/www/site/index

Dicho esto, es posible que solo necesites el Alias /blog /var/www/blog; Es posible que ese segundo Alias / /var/www/site/indexno sea necesario siempre que DocumentRootesté configurado en /var/www/site/index.

Una descripción general buena, simple y concisa de cómo funcionan las configuraciones de Apachese puede encontrar en este sitio.

información relacionada