[Apache] Kleines Ärgernis mit VirtualHost(s)



  • Hallo!

    Ich habe versucht auf meinem Rechner eine Arbeitsumgebung zu konfigurieren, die der Konfiguration des Servers ähnlich sein soll, auf dem am Ende meine fertige Web-Applikation laufen wird. Ich entwickle eine multilinguale Webseite, weshalb ich für die Primärsprache eine (Toplevel-)Domain brauche, und für jede weitere eine Sub-Domain. Für diesen Zweck hab ich bei www.dyndns.org eine gratis (Sub-)Domain registriert, die in etwa so aussieht: http://xyz.ath.cx/ (xyz ist fiktiv, den echten Namen kann ich nicht bekanntgeben)

    Ich weiß, ich könnte auch beliebige Domänen in meiner .host-Datei einfügen um das gleiche Ziel zu erreichen, jedoch mit dem Unterschied, dass diese Domänen nur lokal auf meinem Rechner funktionieren würden. Die Webseite soll allerdings von ausgewählten Personen anwählbar sein, damit sie den Fortschritt, den ich mache, beobachten können, und deshalb nehme ich die Dienste von dyndns.org in Anspruch.

    "xyz.ath.cx" soll also den Toplevel-Domainnamen darstellen, und da ich meine Domäne mit "Wildcards" registriert habe, kann ich so viele (Sub-)Sub-Domains verwenden wie mir lieb ist (z.B. de.xyz.ath.cx). Allerdings kann ich auch jede Menge Blödsinn vor meinen Domainnamen schreiben (z.B. asd0h6w.lala.uodp.xyz.ath.cx), wobei Apache trozdem brav die Hauptseite serviert.

    Ich möchte von euch jetzt wissen wie ich das unterbinden kann, weil es mich einfach interessiert. Außerdem würde ich gerne eure Kritik zu meinen VHosts hören, weil ich relativ unbewandert in diesem Gebiet bin. Eines vorweg: ich weiß, dass in der Doku steht, dass NameVirtualHost nur eine IP-Adresse sein soll, aber ich wollte diesbezüglich nicht weiter über Sinn oder Unsinn nachdenken. Vielleicht hat ja jemand Lust es mir zu erklären :).

    NameVirtualHost xyz.ath.cx:80
    
    <VirtualHost xyz.ath.cx:80>
      ServerName xyz.ath.cx
      ServerAdmin aziz@xyz.com
      DocumentRoot "C:\project"
      <Directory />
        Order Deny,Allow 
        Allow from all
    
        AllowOverride All
        AddDefaultCharset UTF-8
      </Directory>
      Alias /images "C:\project\en\images"
    </VirtualHost>
    
    NameVirtualHost de.xyz.ath.cx:80
    
    <VirtualHost de.xyz.ath.cx:80>
      ServerName de.xyz.ath.cx
      ServerAdmin aziz@xyz.com
      DocumentRoot "C:\project"
      <Directory />
        Order Deny,Allow 
        Allow from all
    
        AllowOverride All
        AddDefaultCharset UTF-8
      </Directory>
      Alias /images "C:\project\de\images"
    </VirtualHost>
    
    NameVirtualHost ur.xyz.ath.cx:80
    
    <VirtualHost ur.xyz.ath.cx:80>
      ServerName ur.xyz.ath.cx
      ServerAdmin aziz@xyz.com
      DocumentRoot "C:\project"
      <Directory />
        Order Deny,Allow 
        Allow from all
    
        AllowOverride All
        AddDefaultCharset UTF-8
      </Directory>
      Alias /images "C:\project\ur\images"
    </VirtualHost>
    
    #Hier mein Versuch illegale Sub-Domains zu unterbinden
    
    NameVirtualHost *.xyz.ath.cx:80
    <VirtualHost *.xyz.ath.cx:80>
    <Directory />
      Order Deny,Allow 
      Deny from all
    </Directory>
    </VirtualHost>
    

    Achja, wenn euch das Alias /images wundert: das ist meine Art & Weise das Problem mit sprachenabhängigen Ressourcen (im Moment hab ich nur Grafiken wie Logos, oder Grafiken mit Texten drinnen) anzugehen. Durch diesen Alias brauch ich in meinen HTML-Dateien z.B. nur /images/logo.png schreiben, und je nachdem auf welcher Sub-Domain der User sich befindet, wird das Logo in der korrekten Sprache ausgewählt. Auf diese Weise vermeide ich es den Sprachcode Bestandteil des Pfades zu machen (z.B. en/images/logo.png od. de/images/logo.png), weil dies die Sache etwas komplizierter und aufwändiger zum Verwalten macht...
    Ressourcen die allen Sprachen gemein sind, packe ich in den '/cmn' Ordner, wofür ich natürlich keinen Alias brauche. :p 🙂

    Mit freundlichen Grüßen,
    Aziz


Anmelden zum Antworten