Kecualikan domain tertentu dari Apache2 serverAlias ​​saat menggunakan alias catch all * (wildcard)

10

Saya memiliki aplikasi web yang perlu mendukung domain khusus, dalam hal ini saya telah mengatur server virtual berbasis nama berikut:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    RackEnv production
    DocumentRoot /srv/www/example/current/public
    <Directory /srv/www/example/current/public>
             AllowOverride all
             Options -MultiViews FollowSymLinks
    </Directory>
    ErrorLog /srv/www/example/log/error.log
    TransferLog /srv/www/example/log/access.log
</VirtualHost>

Perhatikan * sebagai alias server? yang menangkap semua domain di server itu. Namun, saya memiliki situs lain di server ini yang ingin saya kecualikan dari daftar ini. Lebih ekonomis bagi saya untuk memiliki daftar domain yang dikecualikan daripada mengatur secara manual setiap domain yang dapat didaftarkan pengguna pada layanan ini sebagai server.

Mungkin ini bukan cara terbaik untuk pergi, tetapi saya sedang mencari bantuan, dengan cara (relatif sederhana) terbaik untuk membuat aplikasi web yang dapat menangkap domain apa pun, sementara memungkinkan domain tertentu lainnya dialihkan ke aplikasi yang berbeda .

Victor S
sumber

Jawaban:

12

Apache mencari kecocokan dalam urutan bahwa domain ditentukan. Jika saya memahami masalah Anda dengan benar, maka itu dapat diselesaikan dengan menentukan host Anda untuk dikecualikan sebelum menangkap semua host.

<VirtualHost *:80>
    ServerName excluded.example.com
    ServerAlias  something.example.com ...
    ...
</VirtualHost>
<VirtualHost *:80>
    ServerName example.com
    ServerAlias * *.example.com www.example.com example.com
    RailsEnv production
    ...
</VirtualHost>
user9517
sumber
1
Ya, Anda benar, tetapi saya bingung tentang bagaimana melakukan ini pada stack Ubuntu 10.4 default, di mana seluruh shenanigans dikelola dengan memiliki situs yang tersedia dan direktori yang mendukung situs, dan setiap definisi virtual host ada di eksklusif sendiri. file ... bagaimana cara mengontrol pesanan dalam kasus itu?
Victor S
File-file tersebut dimuat dalam urutan abjad (urutan default untuk ls).
user9517
1
untuk definisi situs yang perlu didahulukan, beri nama seperti 000-excluded.example.com.confdi dir yang tersedia di situs.
Brian Minton
Saya mencari untuk melakukan hal yang persis sama, dan ini tidak berhasil untuk saya. VirtualHost excluded.example.com yang memiliki "ServerName excluded.example.com \ n Redirect / example.com/excluded " menyebabkan semua permintaan ke VirtualHost yang lebih umum untuk dialihkan (yang pasti mengikuti VirtualHost spesifik dalam konfigurasi).
quuxman