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
, Я хотел бы просто иметь клон репозитория на своем сервере, чтобы я мог просто обновить его до новой версии. Итак, если я клонирую это как 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's 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, можно найти на этом сайте.