Subdomains standardmäßig weiterleiten

  • Hallo!



    Als kleines Lern-Projekt baue ich einen Bilder-Upload-Dienst auf.


    Nun scheitere ich aber an einem kleinen und feinen Problem. Dem Gallery-Dienst.


    User sollen sich in Zukunft registrieren und ein persönliches Album erhalten können. Dazu will ich Subdomains für jeden User einrichten.


    Code
    z.B: natalie.meineseite.com -> /gallery/natalie/


    Das habe ich so versucht (httpd.conf)


    Code
    <VirtualHost 78.46.***.***:80>
    ServerName *.meineseite.com
    DocumentRoot /gallery/*
    </VirtualHost>


    Was stimmt hier nicht?

  • Es wäre nett, wenn du noch genau dazuschreiben würdest, was nicht geht. ;)


    Aber ich rate mal, dass der Apache die Konfiguration so nicht annehmen will, was an dem Sternchen im DocumentRoot liegen dürfte. Ich glaube nicht, dass der Apache selbstständig darauf kommt, dass die Wildcard in ServerName den gleichen Inhalt haben soll wie die in DocumentRoot.


    Versuche es stattdessen mal mit einem festen DocumentRoot und mod_rewrite.

  • Naja, der Apache schreibt


    Code
    Warning: DocumentRoot [/gallery/*] does not exist


    Geht das überhaupt nicht per httpd.conf oder lässt sich das noch irgendwie beheben?

  • Genau das hatte ich ja geraten. ;)


    Mit deinem Ansatz wird es vermutlich nicht gehen, allerdings dürfte das vermutlich mit mod_rewrite machbar sein (auch in der httpd.conf). Als kleiner Gedankenanstoß:

    Apache Configuration
    RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.tld$
    RewriteRule (.*) /gallery/%1/$1


    Wird wohl so nicht direkt funktionieren, du musst noch darauf aufpassen, dass es keine Endlosschleife wird usw. Aber vielleicht hilft das schon.

  • Zitat von Robert;18944

    Genau das hatte ich ja geraten. ;)


    Mit deinem Ansatz wird es vermutlich nicht gehen, allerdings dürfte das vermutlich mit mod_rewrite machbar sein (auch in der httpd.conf). Als kleiner Gedankenanstoß:

    Apache Configuration
    RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.tld$
    RewriteRule (.*) /gallery/%1/$1

    Wird wohl so nicht direkt funktionieren, du musst noch darauf aufpassen, dass es keine Endlosschleife wird usw. Aber vielleicht hilft das schon.



    Kenne mich mit mod_rewrite leider nicht so aus.


    subdomain.domain.tld -> /gallery/subdomain (absolut)


    Kannst du mir eine kleine "Vorlage" geben? ;)

  • Zitat von Mo3;18949

    Kannst du mir eine kleine "Vorlage" geben? ;)


    Hab ich doch gemacht. ;) Sehr weit von einer funktionierenden Lösung sollte das nicht entfernt sein.

  • Stehe wahrscheinlich einfach grad aufm Schlauch. xD


    Code
    * Restarting web server apache2                                                Syntax error on line 48 of /etc/apache2/httpd.conf:
    Invalid command 'RewriteCond', perhaps misspelled or defined by a module not included in the server configuration
                                                                             [fail]


    Zitat

    <VirtualHost 78.46.***.***:80>
    RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.tld$
    RewriteRule (.*) /gallery/%1/$1
    ServerName HTTP_HOST
    DocumentRoot /gallery/.*
    </VirtualHost>

  • Tippfehler. Jetzt kommt allerdings das hier


    Code
    apache2: Syntax error on line 189 of /etc/apache2/apache2.conf: Syntax error on line 2 of /etc/apache2/httpd.conf: Cannot load /etc/apache2/modules/mod_rewrite.so into server: /etc/apache2/modules/mod_rewrite.so: cannot open shared object file: No such file or directory
  • Hi,


    habe es jetzt mit dem Link von Servior gemacht. Apache meldet beim Restart nichts mehr, aber es will immer noch nicht funktionieren. Subdomains leiten nicht automatisch in das Verzeichnis weiter.


    Code
    <VirtualHost 78.46.***.***:80>
    ServerName %%.domain.com
    VirtualDocumentRoot /gallery/%0 
    </VirtualHost>
  • Lass mal die folgende Checkliste durchgehen:


    a) Wo ist die Datei mit dem vHost gespeichert? Unter "/etc/apache/sites-enabled"? Da gehört sie hin (es sei denn, du konfigurierst den Apachen anders)
    b) Ist in der /etc/apache2/apache2.conf ein "Include /etc/apache2/sites-enabled/"? Wenn nicht, einfügen.
    c) Benutzer mal folgende Syntax als vHost-Eintrag:

    Code
    <VirtualHost *:80>
        ServerAdmin apache@server.tld
        DocumentRoot /var/www/gallery
        ServerName www.deinedomain.tld
        ServerAlias *.bdeinedomain.tld
        ErrorLog /var/log/apache2/gallery_error
        CustomLog /var/log/apache2/gallery_access common
    </VirtualHost>

    d) Führe ein "/etc/init.dapache2 restart" oder "/etc/init.d/apache2 reload" aus.

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Zitat

    a) Wo ist die Datei mit dem vHost gespeichert? Unter "/etc/apache/sites-enabled"? Da gehört sie hin (es sei denn, du konfigurierst den Apachen anders)


    Nein, ich benutze die /etc/apache2/httpd.conf für die vHosts. Ist das falsch?

  • Nein. Nur vielleicht ein wenig unübersichtlicher.


    Dann vergiss "a)" und schaue bei b) nach "Include /etc/apache2/httpd.conf". ;)

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Ich gehe davon aus, dass die Datei schon verwendet wird, sonst hätte es ja vorher die Fehlermeldungen nicht gegeben. Aber der ServerName-Eintrage sollte so aussehen:

    Code
    ServerName *.domain.com
  • Bloß nicht. Eine Wildcard setzt man nicht als Servernamen. Es mag gehen, ist aber noch ein Tick schlimmer wie mit hochgezogenen Tennissocken und Sandalen über den Strand von Mallorca zu laufen. Fast!


    Für die Wildcards sorgt das ServerAlias

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Is drin, ja.


    Zitat

    # Include all the user configurations:
    Include /etc/apache2/httpd.conf


    Ich werd´s jetzt einfach mal mit der mod_rewrite probieren.

  • Artimis, frag mich nicht wieso, aber dein vHost-Eintrag hat irgendwie funktioniert, frag mich nicht wie.:D


    Allerdings kommt man jetzt bei einem Aufruf von


    beliebigesubdomain.domain.com


    immer zu der Übersicht von /gallery, egal welche Subdomain man eingibt. Gibt´s dafür auch noch eine Lösung?