Można sprawdzić hosta, a następnie obsłużyć to z mod_rewrite tworzenia przekierowanie 301 w pliku .htaccess
; chociaż jeśli masz dostęp, to znacznie lepiej, jeśli zrobisz to w httpd.conf
lub dołączonym pliku konfiguracyjnym.
Najlepszy Scenariusz
Ponieważ wygląda mod_cband chce inny virtualhost dla każdej domeny, by skonfigurować swoją httpd.conf
pliku coś takiego i obejmują reguły przepisywania w samej konfiguracji. Niektóre hosty zrobi tę metodę gdzie głównym miejscem konto jest DocumentRoot
i wszystkie inne miejsca są zagnieżdżone pod to katalog:
<VirtualHost *:80>
ServerName www.mywebsite.com
DocumentRoot /home/mywebsite/
RewriteEngine on
RewriteRule ^/files/videos/(.*)$ http://video.mywebsite.com/$1 [R=301,L]
RewriteRule ^/files/images1/(.*)$ http://image1.mywebsite.com/$1 [R=301,L]
RewriteRule ^/files/images2/(.*)$ http://image2.mywebsite.com/$1 [R=301,L]
</VirtualHost>
<VirtualHost *:80>
ServerName video.mywebsite.com
DocumentRoot /home/mywebsite/files/video/
</VirtualHost>
<VirtualHost *:80>
ServerName image1.mywebsite.com
DocumentRoot /home/mywebsite/files/images1/
</VirtualHost>
<VirtualHost *:80>
ServerName image2.mywebsite.com
DocumentRoot /home/mywebsite/files/images2/
</VirtualHost>
Runner up
Jeśli używasz dostawcy usług hostingowych gdzie, nie masz dostępu do plików httpd.conf
i nie ustawiły domen jako alias
głównej domeny (każda domena ma oddzielny folder), następnie zapisałeś swoje reguły w katalogu głównym .htaccess
dla domeny to:
RewriteEngine On
RewriteRule ^(files/videos/.*)$ http://video.mywebsite.com/$1 [R=301,L]
RewriteRule ^(files/images1/.*)$ http://image1.mywebsite.com/$1 [R=301,L]
RewriteRule ^(files/images2/.*)$ http://image2.mywebsite.com/$1 [R=301,L]
Większość napowietrznych
Jeśli są one za pomocą aliasów (gdzie wszystko ma dokładnie ten sam korzeń dokumentu), to musisz sprawdzić żądaną nazwę hosta z plikiem .htaccess
który jest powszechnie przyjętego przez wszystkich:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^video.mywebsite.com$
RewriteRule ^(files/videos/.*)$ http://video.mywebsite.com/$1 [R=301,L]
#Check to make sure if they're on the video domain
#that they're in the video folder otherwise 301 to www
RewriteCond %{HTTP_HOST} ^video.mywebsite.com$
RewriteCond %{REQUEST_URI} !^/files/videos [NC]
RewriteRule ^.*$ http://www.mywebsite.com/ [R=301,L]
RewriteCond %{HTTP_HOST} !^image1.mywebsite.com$
RewriteRule ^(files/images1/.*)$ http://image1.mywebsite.com/$1 [R=301,L]
#Check to make sure if they're on the image1 domain
#that they're in the images1 folder
RewriteCond %{HTTP_HOST} ^image1.mywebsite.com$
RewriteCond %{REQUEST_URI} !^/files/images1 [NC]
RewriteRule ^.*$ http://www.mywebsite.com/ [R=301,L]
RewriteCond %{HTTP_HOST} !^image2.mywebsite.com$
RewriteRule ^(files/images2/.*)$ http://image2.mywebsite.com/$1 [R=301,L]
#Check to make sure if they're on the image1 domain
#that they're in the images2 folder
RewriteCond %{HTTP_HOST} ^image2.mywebsite.com$
RewriteCond %{REQUEST_URI} !^/files/images2 [NC]
RewriteRule ^.*$ http://www.mywebsite.com/ [R=301,L]
Sprawdzanie refe rrer jest najczęstszym "rozwiązaniem" dla tego - w cudzysłowie, ponieważ polecający jest niewiarygodny. – CBroe