Bir alt etki alanını bir dizine yeniden yazmak için .htaccess kullanmak mümkün müdür?
Misal:
içeriğini gösterir
Bir alt etki alanını bir dizine yeniden yazmak için .htaccess kullanmak mümkün müdür?
Misal:
içeriğini gösterir
Yanıtlar:
Bunu .htaccess dosyanıza eklemeyi deneyin:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
Daha genel bir kural için (yalnızca herhangi bir alt alan adıyla değil sub
) son iki satırı bununla değiştirin:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
yalnızca gösterilmesini istediğimde adresine yönlendiriyorhttp://test.domain.com/
test.domain.com/subdomains/test
- belki burada başka bir şeyler oluyor. RewriteBase /
Hemen sonra ekleyebilir misin RewriteEngine on
? Ayrıca, göstermeye devam etmek test.domain.com
istiyorsanız, mod_proxy ve [P]
bayrağı kullanmanız gerekecektir .
Ben mod_rewrite uzmanı değilim, sık sık bununla uğraşıyorum, ancak bunu sitelerimden birinde yaptım, koşullarınıza bağlı olarak başka bayraklar vb. Gerekebilir. Bunu kullanıyorum:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Sitenin geri kalanı için diğer tüm yeniden yazma kuralları, alt alan adı yeniden yazmalarınıza müdahale etmelerini önlemek için daha sonra uygulanmalıdır.
.htaccess
bu sayfaya ile başlayan birinin gelmesi durumunda (benim yaptığım gibi), gerçek .htaccess
dosyayı oluşturmanın yanı sıra , etkili AllowOverride
olması için VirtualHost
ayarlarınızda ayarlamanız gerekir ( stackoverflow.com/a/22819550/1657502 ) , Apache etkinleştirmek rewrite
modülü ve sonra Apache (yeniden stackoverflow.com/a/5758551/1657502 )
www.
önek muhtemelen yeniden yazmadan çok yeniden yönlendirme yoluyla destekleniyor.
.Htaccess'te bir alt alan adını bir alt klasöre yeniden yazmak için aşağıdaki kuralı kullanabilirsiniz :
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Satır satır açıklama:
RewriteEngine on
Yukarıdaki satır, sunucuya URL'leri yeniden yazmak için motoru açmasını söyler.
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
Bu satır, bir regex kalıbı kullanarak HTTP ana bilgisayarıyla eşleştiğimiz RewriteRule için bir koşuldur. Koşul, ana bilgisayarın alt alan.com olması durumunda kuralı yürüteceğini söyler .
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Kural, http://sub.domain.com/foo ile eşleşir ve dahili olarak http://sub.domain.com/folder/foo adresine yönlendirir .
Değiştir sub.domain.com alt alan adı ile ve size alt alanınızı işaret etmek istediğiniz klasörün adı ile klasör.
Aynı sorunu yaşadım ve http://www.webmasterworld.com/apache/3163397.htm adresinde ayrıntılı bir açıklama buldum
Benim çözümüm (alt etki alanları içeriği şu adda bir klasörde olmalıdır sd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
Bu, aynı klasöre bir alt etki alanına yeniden yönlendirir:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Bu .htaccess dosyasını alt etki alanı klasörüne koymayı deneyin:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
Yalnızca http://sub.domain.com/ göstermesini istediğinizde http://domain.com/subdomains/sub/ adresine yönlendirir.
Alt etki alanı dizinini yeniden yönlendir:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
Herhangi bir alt alan talebi için şunu kullanın:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
Sadece ihtiyacınız olan alt alan adıyla aynı klasör yapın. Klasör şu şekilde olmalıdır: sub.domain.com için domain.com/sub .
http://test.domain.com
URL beni adresine yönlendiriyorhttp://test.domain.com/subdomains/test/
./subdomains/test/
Sonunda göstermeden mümkün mü ?