Hieronder het virtualhost bestand van een domein waar verschillende andere websites op draaien. Op de aliassen werkt de code hieronder perfect zoals het zou moeten werken. Tot zover getest is in ieder geval.
Het belangrijkste voor de standaard website die op dit domein draait is de onderste regel. Zoals je ziet wordt eerst het www. gedeelte van een URL verwijderd en een subdomein omgezet naar een subdir ( sub.domein.nl => domein.nl/sub/ ). Vervolgens wordt er gekeken of er misschien een bestaand bestand of folder word aangeroepen, als dat zo is moet de onderste regel niet uitgevoerd worden maar gewoon het bestand weergegeven worden.
Het enige probleem is dat een bestaand bestand via een alias niet word gezien als bestaand bestand omdat ernaar gezocht word in de document root. Is er een methode omheen te vinden of is mijn hele opzet al verkeerd?
Het belangrijkste voor de standaard website die op dit domein draait is de onderste regel. Zoals je ziet wordt eerst het www. gedeelte van een URL verwijderd en een subdomein omgezet naar een subdir ( sub.domein.nl => domein.nl/sub/ ). Vervolgens wordt er gekeken of er misschien een bestaand bestand of folder word aangeroepen, als dat zo is moet de onderste regel niet uitgevoerd worden maar gewoon het bestand weergegeven worden.
Het enige probleem is dat een bestaand bestand via een alias niet word gezien als bestaand bestand omdat ernaar gezocht word in de document root. Is er een methode omheen te vinden of is mijn hele opzet al verkeerd?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| <VirtualHost *>
servername domein.nl
serverAlias *.domein.nl
DocumentRoot E:/website/www
AliasMatch /(phpmyadmin|phpma)/?(.*) E:/scripts/phpmyadmin/$2
AliasMatch ^/(info)/?(.*) E:/scripts/phpinfo/$2
AliasMatch ^/usr/([^/]+)/?(.*) D:/users/$1/www/$2
AliasMatch ^/dom/([^/]+)/?(.*) D:/domains/$1/www/$2
RewriteEngine On
# Verwijder www.
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1$1 [R=301,L]
# Redir subdomains naar subfolders
RewriteCond %{HTTP_HOST} ^([a-z]+[a-z0-9-_]*[a-z0-9]+)\.(.+\..+)$ [NC]
RewriteRule ^(.*)$ http://%2/%1$1 [R=301,L]
#Voer de laatste rewrite niet uit als er een bestaand bestand wordt opgeroepen
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} -d [OR]
RewriteCond %{DOCUMENT_ROOT}%{SCRIPT_FILENAME} -f
RewriteRule (.*) $1 [L,NS]
# domein.nl/gebruikers/edit/ => domein.nl/index.php/gebruikers/edit/
RewriteRule ^([^\./]+)?/(.*) /index.php/$2 [L,NS]
</VirtualHost> |