Apache 中文件系统的 URL 映射

Apache 中文件系统的 URL 映射

我有一个博客,位于mysite.tld/blog。目前通过根目录中的mysite.tld重定向到。显然,当我两年前设置它时,我无法让同样位于根目录中的文件工作。在文件系统上,我的博客位于。mysite.tld/blogindex.php.httaccess/var/www/blog

现在我创建了一个简单的网站,我希望它显示在mysite.tld。它通过一个 PHP 微框架工作,该框架通过index.php文件提供页面。我在 git repo 中拥有这个网站,在这个 repo 中, 位于index.phpwww/index.php我只想在我的服务器上克隆一个 repo,这样我就可以拉取更新到新版本。因此,假设我将其克隆为site/var/www入口点最终位于/var/www/site/www/index.php

我花了 3 个小时尝试让这个非常简单的东西工作,但无济于事。我只想将 URL 映射/blog/var/www/blog并将 URL 的其余部分映射//var/www/site/index。我需要什么神奇的配置才能做到这一点?

以下是输出lsb_release -a

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

以下是输出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"

以下是输出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)

答案1

我要做的就是将 URL 映射/blog/var/www/blog并将 URL 的其余部分映射//var/www/site/index。为此我需要什么神奇的配置?

你可以很容易地做到这一点Apache 的Alias指令像这样。请注意,我看到您使用的是 Apache 2.4.7,它的语法可能与此建议所基于的 Apache 2.2 及更早版本略有不同。但话虽如此,虽然语法可能略有不同,但总体概念仍然相同,我相当有信心 Apache 2.4 仍然具有Alias功能。

这些项目将在您的主站点的 Apache 配置文件中设置,该文件位于 中/etc/apache2/sites-available/。现在它们可能位于名为 的文件中/etc/apache2/sites-available/default,或位于主机名的单独文件中,例如,/etc/apache2/sites-available/mysite.tld因此,在彻底修改文件之前,请务必检查您的配置。

这会将所有请求设置为http://mysite.tld/blog从中获取内容/var/www/blog

Alias /blog /var/www/blog

这会将所有请求设置为http://mysite.tld/从中获取内容/var/www/site/index

Alias / /var/www/site/index

现在说,您可能只需要;只要您的设置为,Alias /blog /var/www/blog那第二个Alias / /var/www/site/index可能不需要。DocumentRoot/var/www/site/index

关于 Apache 配置设置如何工作的良好、简单且简洁的概述可以在此网站上找到

相关内容