2008-09-08 23 views
27

Bir joker etki alanı için istekleri bir alt dizine yeniden yönlendirmeye çalışıyorum.
ie. something.blah.domain.com ->blah.domain.com/somethingApache rewrite subdomain alanına dayalı

Yeniden yazma kuralında kullanılacak alt etki alanı adını nasıl öğreneceğimi bilmiyorum.

Nihai Çözüm:

RewriteCond %{HTTP_HOST} !^blah\.domain\.com 
RewriteCond %{HTTP_HOST} ^([^.]+) 
RewriteRule ^(.*) /%1/$1 [L] 

Veya gibi apache belgelerinden URL Rewriting Guide bir göz olmalıdır pilif

RewriteCond %{HTTP_HOST} ^([^.]+)\.media\.xnet\.tk$ 

cevap

31

tarafından işaret etti.

şu denenmemiş, ama hüner yapmalıdır:

RewriteCond %{HTTP_HOST} ^([^.]+)\.blah\.domain\.com$ 
RewriteRule ^/(.*)$   http://blah.domain.com/%1/$1 [L,R] 

Bu, yalnızca alt alan hiçbir nokta içeriyorsa. Aksi takdirde, sabitleme nedeniyle hala çalışması gereken herhangi bir karakterle eşleşmesi için RewriteCond'daki Regexp'i değiştirmeniz gerekir, ancak bu kesinlikle daha güvenlidir.

+1

Teşekkür yapmalıyım

RewriteCond %{HTTP_HOST} ^([^\.]+)\.media\.xnet\.tk$ ^ 

. ÇALIŞIYOR bir cazibe gibi. – goo

+0

Not: "Rewrite kullanılmaması" notu: http://httpd.apache.org/docs/2.2/rewrite/avoid.html#redirect – marcovtwout

3

bu deneyin:

RewriteCond %{HTTP_HOST} (.+)\.blah\.domain\.com 
RewriteRule ^(.+)$ /%1/$1 [L] 

@pilif (yorumunu bakınız): Tamam, bu doğru. Projelerimden birinde kullandığım bir .htaccess'i kopyaladım. o biraz farklı bir yaklaşım :)

sizin RewriteCond çizgisi yanlıştır

+0

çözümünüz, blah.domain.com adresine yönlendirilmez, ancak bir şey için yeniden yazılır. .domain.com/bir şey, orijinal soruyu nasıl okuduğum değil. – pilif

+0

Sanırım ikisi de aynı VirtualHost tarafından sunulmuşsa, sorun yok. Özellikle, bu şekilde yapmak, müşterinin yönlendirmeyi görmediği anlamına gelir - yine de bir şey görürsünüz.blah.example.com. –

1

@Sam vardır sanırım. Değişkenin genişlemesi% değil, $ ile tetiklenir. kandırmasına

+0

HA! bir karakter yazarı tekrar vurur :( – Sam