Strona 1 z 1

[+] Apache2, vhost i dynamiczne subdomeny

: 13 kwietnia 2010, 17:52
autor: LordRuthwen
Witam.
Zainstalowałem MUWordpress tworzący blogi jako prefixy domeny na jakiej siedzi i wszystko niby działa, ale prefixy przekierowane są na domenę domyślną dla tej maszyny, czyli:
  1. Otwierając:

    Kod: Zaznacz cały

    jakaśdomena.pl
    otwiera się to co powinno czyli strona główna Wordpressa.
  2. Zakładając blog:

    Kod: Zaznacz cały

     xyz.jakasdomena.pl
    rejestruję użytkownika, wysyła maila itd., ale użytkownik się już nie aktywuje bo odnośnik z maila zawiera:

    Kod: Zaznacz cały

    xyz.jakasdomena.pl/...
    i nie zostaje znaleziony gdyż xyz.jakasdomena.pl szuka plików całkiem gdzie indziej (plik /etc/apache2/sites-available/default).
    W jaki sposób skonfigurować vhosta aby ,,łapał'' wszystkie odwołania do tej domeny niezależnie od tego co jest prefixem?

    Kod: Zaznacz cały

    <VirtualHost *:80>
        ServerName jakasdomena.pl
        ServerAdmin webmaster@localhost
        ServerAlias www.jakasdomena.pl
        
        DocumentRoot /home/jakasdomena/www/
        DirectoryIndex index.html index.htm index.php
        AccessFileName .htaccess
        <Files ~ "^\.ht">
            Order allow,deny
            Deny from all
        </Files>
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /home/jakasdomena/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>
        ErrorLog /home/jakasdomena/log/error.log
        LogLevel warn
        CustomLog /home/jakasdomena/log/access.log combined
        ServerSignature On
    </VirtualHost>

: 13 kwietnia 2010, 18:30
autor: lessmian2
Widzę dwie możliwości. Możesz pokombinować z mod_rewrite - sprawdzać główną domenę i odpowiednio przekierowywać żądanie. Możesz też zainteresować się mod_vhost_alias - tym też powinno się udać zrobić to, czego potrzebujesz.

: 13 kwietnia 2010, 19:07
autor: LordRuthwen
Tak sobie myślę, jakbym usunął domyślne ustawienia z konfiguracji apache i ustawił przekierowanie dla błędu 404.
Miałoby to chyba szansę powodzenia, bo jak na razie wszystko czego nie znajdzie w ustawieniach trafia na ustawienia z /etc/apache2/sites-available/default.
Dobrze myślę?

: 13 kwietnia 2010, 19:41
autor: lessmian2
LordRuthwen pisze:jakbym usunął domyślne ustawienia z konfiguracji apache
Tzn?

: 13 kwietnia 2010, 19:52
autor: LordRuthwen
Chodzi mi o wyłączenie pliku /etc/apache2/sites-available/default z konfiguracji apache - vhosty są trzymane w osobnych plikach, które są odpowiedzialne tylko za nie.
W pliku ,,default'' jest w tym momencie to:

Kod: Zaznacz cały

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    
    DocumentRoot /home/apache/www/
    # use .htaccess files for overriding,
        AccessFileName .htaccess
        # and never show them
        <Files ~ "^\.ht">
            Order allow,deny
            Deny from all
        </Files>
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/apache/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
I do tego właśnie odnosi się apache w momencie gdy czegoś nie może znaleźć.

: 13 kwietnia 2010, 20:03
autor: lessmian2
Jeśli usuniesz plik default (domyślnie link 000-default w sites-enabled), to na jego miejsce wskoczy kolejny plik (kolejność alfabetyczna według nazw plików) i będziesz miał właściwie to samo, tylko z innym VHostem. Nie wiem czy jasno to wytłumaczyłem. W każdym bądź razie defaultowego VHosta zawsze będziesz miał, a czy będzie w pliku default czy bryndza.conf to sprawa wtórna. Z resztą sprawdz:

Kod: Zaznacz cały

apache2ctl -S
Dostaniesz spis wszystkich VHostów i zawsze jeden będzie oznaczony jako domyślny.

: 13 kwietnia 2010, 20:39
autor: LordRuthwen
Oj, czyli jednak źle myślałem, a już się cieszyłem... ;)
Jeszcze jakieś sugestie?

: 13 kwietnia 2010, 20:52
autor: lessmian2
A może tak po prostu:

Kod: Zaznacz cały

ServerAlias *.jakasdomena.pl
Edit:
Lub zamień miejscami pliki default i ten z konfiguracją VHosta jakasdomena.pl (pokombinuj z cyferkami).

: 13 kwietnia 2010, 21:05
autor: LordRuthwen
lessmian2 pisze:A może tak po prostu:

Kod: Zaznacz cały

ServerAlias *.jakasdomena.pl
Edit:
Lub zamień miejscami pliki default i ten z konfiguracją VHosta jakasdomena.pl (pokombinuj z cyferkami).
O matko, a takie proste to było.
To rozwiązanie z gwiazdką działa tak jak chciałem :)
Próbowałem to wcześniej wepchnąć tu:

Kod: Zaznacz cały

<VirtualHost *:80>
ale efekt był odwrotny od zamierzonego.
Dziękuję serdecznie :)