Сопоставление URL с файловой системой в Apache

Сопоставление URL с файловой системой в Apache

У меня есть блог, который находится в mysite.tld/blog. В настоящее время mysite.tldперенаправляет на mysite.tld/blogчерез index.phpв корне. Видимо, когда я настраивал это два года назад, я не мог заставить .httaccessработать файл, который также находится в корне. В файловой системе мой блог находится в /var/www/blog.

Теперь я создаю простой веб-сайт, который я хотел бы видеть в mysite.tld. Он работает через микрофреймворк PHP, который обслуживает страницы через index.phpфайл. У меня есть этот сайт в репозитории git, и в этом репозитории index.phpнаходится в www/index.php. Я хотел бы просто иметь клон репозитория на своем сервере, чтобы я мог просто выполнить pull для обновления до новой версии. Итак, если я клонирую его как 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. Какая магическая конфигурация мне нужна для этого?

Вы можете легко сделать это с помощьюAliasДиректива Apacheкак это. Обратите внимание, что я вижу, что вы используете 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.можно найти на этом сайте.

Связанный контент