.htaccess Environment Variable für dynamische BaseUrl bei mod_rewrite

Veröffentlicht von

Kleines praktisches Schnippsel um dynamisch eine environment Variable zu setzen (bei ~user/ basierten apache2 Verzeichnissen funktioniert mod_rewrite ohne BaseUrl nicht, die muss immer gesetzt werden). Zusätzlich ist hier noch der untere Bereich dafür zuständig während dem Livegang / Upgrades / etc auf eine Wartungsseite umzuleiten und den Zugriff per IP oder Useragent (in dem Falle Facebook für open graph Testing) zu erlauben. Alle anderen landen auf der offline.php

# create ENVironment Var for htacess
RewriteCond %{REQUEST_URI}::$1 ^(.*?/)(.*)::2$
RewriteRule ^(.*)$ - [E=BASE:%1]
# then work with %{ENV:BASE}

# Ordner, die nicht rewritet werden (vor der Umleitung, damit man die offline.php stylen kann)
RewriteRule ^assets* - [L]
RewriteRule ^css* - [L]
RewriteRule ^js* - [L]

# If not local or customer, put page offline
# also skip facebook to test open_graph
RewriteCond %{REMOTE_ADDR} !^192.*$
# Sofort AG dynamische IP
RewriteCond %{REMOTE_ADDR} !^84.159.*
#Facebook
RewriteCond %{HTTP_USER_AGENT}  !^facebook(.*)$
RewriteRule !^offline.php %{ENV:BASE}offline.php [R=302,L]

# Rewriting Urls
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(aktivierung/)(.+)$  %{ENV:BASE}ajax.php?action=activate&redirect=home&token=$2 [L,QSA]