にブログがありますmysite.tld/blog
。現在はルートの を経由してmysite.tld
にリダイレクトされます。どうやら 2 年前にこれを設定したときに、ルートにある ファイルを動作させることができなかったようです。ファイルシステム上では、私のブログは にあります。mysite.tld/blog
index.php
.httaccess
/var/www/blog
ここで、 に表示したいシンプルな Web サイトを作成しますmysite.tld
。これは、index.php
ファイルを介してページを提供する 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の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
その 2 番目は必要ないかもしれません。Alias / /var/www/site/index
DocumentRoot
/var/www/site/index
Apache の設定がどのように機能するかについての、シンプルで簡潔な概要このサイトで見つけることができます。