Sie können den Host überprüfen und dann damit umgehen mit mod_rewrite eine 301-Weiterleitung in einer .htaccess
-Datei zu erstellen; obwohl, wenn Sie Zugriff haben, ist es viel besser, wenn Sie dies in der httpd.conf
oder eine enthaltene Konfigurationsdatei stattdessen tun.
beste Szenario
Da es so aussieht mod_cband eine andere virtualhost für jede Domain will, würden Sie Ihre Setup-Datei httpd.conf
so etwas wie dieses und schließen die Rewrite-Regeln in der Config selbst. Einige Webhoster wird diese Methode tun, wo die Haupt-Account-Website ist die DocumentRoot
und die anderen Seiten sind alle verschachtelt darunter Verzeichnis ist:
<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
Wenn Sie einen Hosting-Service-Provider verwenden wo, Sie haben keinen Zugriff auf die httpd.conf
Dateien, und sie haben nicht die Domänen als alias
der Hauptdomäne eingerichtet (jede Domäne hat einen separaten Ordner), dann würden Sie Ihre Regeln im Stamm .htaccess
für www.mywebsite.com
wie schreiben dies:
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]
Die meisten Kopf
Wenn sie Aliasnamen verwenden (wo alles genau das gleiche Dokument Wurzel hat) dann müssen Sie den angeforderten Hostnamen mit einem .htaccess
-Datei zu überprüfen, die von allen häufig verordnet hat:
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]
die Refe prüfen rrer ist die gebräuchlichste "Lösung" dafür - in Anführungszeichen, weil der Referrer unzuverlässig ist. – CBroe