URL-Zuordnung zum Dateisystem in Apache

1363
Jeroen De Dauw

Ich habe einen Blog, der bei ist mysite.tld/blog. Derzeit mysite.tldleitet auf mysite.tld/blogüber eine index.phpin der Wurzel. Anscheinend, als ich das vor zwei Jahren aufbaute, konnte ich die .httaccessDatei nicht bekommen, die sich auch im Stammverzeichnis befindet. Auf dem Dateisystem ist mein Blog um /var/www/blog.

Jetzt erstelle ich eine einfache Website, auf der ich gerne hätte mysite.tld. Es funktioniert über ein PHP-Microframework, das Seiten über eine index.phpDatei bedient. Ich habe diese Site in einem Git Repo, und in diesem Repo index.phpbefindet sich das www/index.php. Ich möchte nur einen Klon des Repos auf meinem Server haben, damit ich einfach auf eine neue Version updaten kann. Angenommen, ich kopiere es wie sitein /var/www, endet der Einstiegspunkt bei /var/www/site/www/index.php.

Ich habe die letzten 3 Stunden damit verbracht, zu versuchen, diese unglaublich einfache Sache zum Laufen zu bringen, ohne Erfolg. Alles, was ich Karte URL tun will /blogzu /var/www/blogund der Rest der URL /an /var/www/site/index. Welche magische Konfiguration brauche ich dafür?

Hier ist die Ausgabe von lsb_release -a:

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

Hier ist die Ausgabe von 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" 

Hier ist die Ausgabe von 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

1 Antwort auf die Frage

3
JakeGould

Alles, was ich Karte URL tun will /blogzu /var/www/blogund der Rest der URL /an /var/www/site/index. Welche magische Konfiguration brauche ich dafür?

Mit der AliasAnweisung von Apache können Sie dies problemlos tun . Beachten Sie, dass Sie Apache 2.4.7 verwenden, die eine etwas andere Syntax als Apache 2.2 und frühere Versionen hat, auf denen dieser Hinweis basiert. Allerdings ist die Syntax möglicherweise etwas anders, aber die Gesamtkonzepte sind immer noch die gleichen und ich bin ziemlich zuversichtlich, dass Apache 2.4 noch über AliasFunktionalität verfügt .

Diese Elemente werden in der Apache-Konfigurationsdatei der Hauptsite festgelegt, die sich in befindet /etc/apache2/sites-available/. Möglicherweise befinden sie sich in einer Datei mit dem Namen /etc/apache2/sites-available/defaultoder in einer separaten Datei für den Hostnamen. /etc/apache2/sites-available/mysite.tldÜberprüfen Sie daher Ihre Konfiguration, bevor Sie die Dateien radikal ändern.

Dies würde alle Anforderungen festlegen http://mysite.tld/blog, um Inhalte von zu erhalten /var/www/blog:

Alias /blog /var/www/blog 

Dies würde alle Anforderungen festlegen http://mysite.tld/, um Inhalte von zu erhalten /var/www/site/index:

Alias / /var/www/site/index 

Jetzt heißt es, Sie brauchen vielleicht nur das Alias /blog /var/www/blog; Diese Sekunde ist Alias / /var/www/site/indexmöglicherweise nicht erforderlich, solange Sie auf DocumentRooteingestellt sind /var/www/site/index.

Eine gute, einfache und prägnante Übersicht über die Funktionsweise von Apache config-Setups finden Sie auf dieser Site .