Apache 2.3 veya üstü
Apache 2.3 veya üstü ile görünüşe göre böyle bir şey yapabilirsiniz (test edilmiş):
<VirtualHost *:80>
ServerName www.example.com
<If "-R '10.10.10.10'">
# The next version of the website...
Alias /favicon.ico /home/ubuntu/website-new/favicon.ico
Alias /static/ /home/ubuntu/static/
WSGIScriptAlias / /home/ubuntu/website-new/main/wsgi.py
</If>
<Else>
# The standard version (e.g. holding page).
Alias /favicon.ico /home/ubuntu/website/favicon.ico
Alias /static/ /home/ubuntu/static/
WSGIScriptAlias / /home/ubuntu/website/main/wsgi.py
</Else>
# and so on...
</VirtualHost>
Apache 2.2 veya öncesi
Güncelleme: Bu iyi bir çözüm değil. Aşağıya bakınız.
Böyle bir hack yapmalısın. Not [PT]
"geçidi" anlamına gelen. Bu olmadan, istemciye gerçek bir HTTP yönlendirmesi gönderilir, bu muhtemelen istediğiniz şey değildir. [OR]
Gösterileri ( "veya" anlamına gelir) bir şey nasıl birden çok adres eşleşecek.
Alias /next/favicon.ico /home/ubuntu/website-new/favicon.ico
Alias /next/static/ /home/ubuntu/static/
WSGIScriptAlias /next /home/ubuntu/website-new/main/wsgi.py
Alias /favicon.ico /home/ubuntu/website/favicon.ico
Alias /static/ /home/ubuntu/static/
WSGIScriptAlias / /home/ubuntu/website/main/wsgi.py
# Rewrite for our IP.
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^80\.4\.170\.209$ [OR]
RewriteCond %{REMOTE_ADDR} ^94\.193\.52\.157$
RewriteRule ^/(.*) /next/$1 [PT]
mod_rewrite
Debian / Ubuntu'da yapabileceğinizi şu komutla etkinleştirmeniz gerekir :
sudo a2enmod rewrite
Bu yöntemin diğer kişilerin test sitenize erişmesini tamamen yasaklamadığından, muhtemelen biraz güvenlik eklemek veya sadece daha belirsiz bir önek seçmek isteyeceksiniz next
.
Mod_rewrite yönteminde güncelleme.
Bu yöntemle ilgili birkaç sorun var. İlk olarak, Django bunun gibi aynı süreçte iki site ile çalışmaz, bu cevaptaki talimatları izlemeniz gerekir .
İkincisi mod_rewrite POST
isteklerle çalışmaz ! Tümü POST
sessizce olarak değiştirilir GET
ve kayıt verileri atılır. Çok sinir bozucu! Bu nedenle ...
iptables sürümü
Sunucuları iki farklı bağlantı noktasında çalıştırın. Bu, iki ayrı django sitesine sahip olmak için WSGI öğelerini içerir.
<VirtualHost *:80>
ServerName www.example.com
Alias /favicon.ico /home/ubuntu/alpha/favicon.ico
Alias /static/ /home/ubuntu/alpha/static/
WSGIDaemonProcess alpha_wsgi user=www-data group=www-data
WSGIScriptAlias / /home/ubuntu/alpha/alpha/wsgi.py
WSGIProcessGroup alpha_wsgi
ServerAdmin info@example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:1222>
ServerName www.example.com
Alias /favicon.ico /home/ubuntu/main/favicon.ico
Alias /static/ /home/ubuntu/main/static/
WSGIDaemonProcess main_wsgi user=www-data group=www-data
WSGIScriptAlias / /home/ubuntu/main/main/wsgi.py
WSGIProcessGroup main_wsgi
ServerAdmin info@example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ardından, iptables
80 numaralı bağlantı noktasındaki ip adresinizden 1222 numaralı bağlantı noktasına istekleri yönlendirmek için bu komutu kullanabilirsiniz :
sudo iptables -A PREROUTING -t nat -p tcp -s your.ip.address --dport 80 -j DNAT --to-destination :1222
Değişim -A
için -D
kuralı kaldırmak için.
Dokümanların ek Listen
ve NameVirtualHost
komutlar eklemenizi önerdiğini unutmayın , ancak aslında onlarsız çalıştığını ve onları eklemenin mola verdiğini buldum (en azından ubuntu'da).