Apache での URL とファイルシステムのマッピング

Apache での URL とファイルシステムのマッピング

にブログがありますmysite.tld/blog。現在はルートの を経由してmysite.tldにリダイレクトされます。どうやら 2 年前にこれを設定したときに、ルートにある ファイルを動作させることができなかったようです。ファイルシステム上では、私のブログは にあります。mysite.tld/blogindex.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/indexDocumentRoot/var/www/site/index

Apache の設定がどのように機能するかについての、シンプルで簡潔な概要このサイトで見つけることができます

関連情報