# Prototypical web configuration when using Apache2 and
# mod_php for hosting technikum29.de.
# We used a similar configuration between 2012-2018 (before moving to nginx+fpm).

# Required modules:
# 

<VirtualHost *:80>
	# Docker:
        ServerName localhost
        DocumentRoot /www

	#CustomLog /var/log/apache2/technikum29.de/access.log combined

        # Aliase und Redirects
        # mehr oder minder legacy von t29old
        # /src muss alias sein wg. Includes, ebenso /dev
	##Alias /src      /home/heribert/technikum29.de/static/src
        ##Alias /dev      /home/heribert/technikum29.de/static/dev
        # Alle Redirects sind im <Directory .../checkout>. Alias muss VirtualHost-Context sein.

        <IfModule userdir_module>
	        UserDir disabled
        </IfModule>

        # Static files "import": Dateien, die nicht per SVN im 
        # DocumentRoot gewartet werden. Damit wird der DocumentRoot
        # sauber gehalten.
        # (Rewrite muss auf VHost-Level sein da ausserhalb des DocRoots)
        #RewriteEngine On
	#RewriteCond /home/heribert/technikum29.de/static/%{REQUEST_URI} -d [OR]
        #RewriteCond /home/heribert/technikum29.de/static/%{REQUEST_URI} -f
        #RewriteRule ^/(.+)$  /home/heribert/technikum29.de/static/$1 [L]
</VirtualHost>

<Directory /www> # actually one above checkout
        # Fehlerdokumente
        ErrorDocument 404 /lib/404.php
        ErrorDocument 401 /lib/401.php
        ErrorDocument 403 /lib/403.php
        #ErrorDocument 500 /src/error/t29/500.shtm
</Directory>

<Directory /www> # actually checkout
        Require all granted

        # Multiviews ist die Alternative zur RewriteRule, die foo ohne
        # Suffix cacht. foo.php leitet auf PHP-Level auf foo weiter (siehe
        # ENV unten).
        Options +MultiViews
        # Speling macht foo.shtm -> 300 multiple choices
        # Soll aber per 404 gecacht werden und auf foo.php weiterleiten,
        # falls existent.
        #CheckSpelling on
        AllowOverride None

        # Redirects auf Server-Basis "geteilt" fuer https und http.
        # Wuerde auch gerne die Aliase hier machen, aber die muessen auf 
        # vhost-Basis geschehen.
        Redirect permanent /etc       http://old.technikum29.de/etc
        Redirect permanent /projekte  http://www.technikum29.de/de/lernprojekte
        Redirect permanent /projects  /labs

        # ENV-Var um php-Endungen wegzustrippen (hier mit multiviews)
        # SetENV T29URLHIDESUFFIX True
        # -> TODO: Fix it. Doesn't work for me right now here.

	# NB:
	# The following is only to host old contents and actually
	# not used for t29v6.

        # LEGACY: SSI noch erlauben
        # Todo: SSI komplett entfernen
        Options +IncludesNOEXEC
        # SSI legacy loest labs #61 (old websites broken)
        <IfModule ssl_module> 
	        SSILegacyExprParser on
        </IfModule>
        Options +Indexes
        HeaderName HEADER.shtm
        ReadmeName README.html
        IndexOptions SuppressHTMLPreamble FancyIndexing  VersionSort NameWidth=* DescriptionWidth=*
</Directory>

<Directory /www/shared/photos>
        # verbreiteste Methode gegen Hotlinking. Die Conditions sind teilweise
        # recht fragwuerdig (Google...). Testweise aufgesetzt am 29.03.2010.
        # uebernommen fuer t29next am 18.09.2012
        
        # That works in prinicple, but can destroy a developer setup
        # where one uses http://127.0.0.1:80/.
        
        #RewriteEngine On
        #RewriteCond %{HTTP_REFERER}          !technikum29     [NC]
	#RewriteCond %{HTTP_REFERER}          !localhost       [NC]   # Docker
        #RewriteCond %{HTTP_REFERER}          !google          [NC]
        #RewriteCond %{HTTP_REFERER}          !^$
        #RewriteRule ^(.+\.(?:jpg|gif|png))$  /src/hotlinking/photos/$1    [NC,PT]
</Directory>

<Directory /www/de/lernprojekte>
        # hier ist perfomance nicht noetig, aber .htaccesses
        AllowOverride All
</Directory>

<Directory /home/heribert/technikum29.de/static>  # actually not applicable
        # "Static files", die zumindest nicht im SVN gewartet werden, sondern
        # klassisch per (S)FTP.
        Require all granted

        # Schulsachen von Heribert
        AllowOverride All
</Directory>

<Directory /home/heribert/technikum29.de/static/src> # Not applicable here, since t29v6 doesn't use src
        # Includes erlauben da massiv genutzt
        Options +IncludesNOEXEC
        HeaderName HEADER.shtm
        ReadmeName README.html
        IndexOptions +SuppressHTMLPreamble FancyIndexing VersionSort NameWidth=* DescriptionWidth=*
</Directory>


