2010-12-14 3 views
9

Dire que j'ai le fichier suivant:URL/Subdomain récrit (htaccess)

http://www.example.com/images/folder/image.jpg

Je veux servir sur

http://s1.example.com/folder/image.jpg

Comment puis-je faire une ré-écriture htaccess à un point le pour?

Comme par exemple, je fais un sous-domaine s1.example.com puis sur ce sous-domaine, ajouter une règle htaccess pour pointer tous les fichiers, pour le tirer de http://www.example.com/images/

Ne sert fichiers cet acte comme service contenu d'un domaine sans cookie?

Répondre

18

Première Permettez-moi de parler un peu du concept des domaines sans cookie. Normalement, lorsque vous demandez quelque chose via http, tous les cookies pertinents sont envoyés avec la demande. Les cookies dépendent du domaine d'où ils proviennent. L'idée d'utiliser un domaine sans cookie consiste à déplacer le contenu statique qui ne contient pas de cookies, comme les images, vers un domaine distinct afin qu'aucun cookie ne soit envoyé avec cette requête. Cela coupe une petite quantité de trafic.

Ce que vous gagnez en faisant cela dépend du type de page. Plus vous avez d'images, plus vous en gagnez. Si votre site charge un grand nombre de petites images, comme des avatars ou des miniatures d'image, vous pourriez avoir beaucoup à gagner. Au contraire, si votre site n'utilise pas de cookies, vous n'avez rien à gagner. Il est tout à fait possible que votre page ne se charge pas sensiblement plus rapidement, si elle n'utilise qu'une petite quantité d'images, qui seront quand même mises en cache entre les chargements de pages.

Une chose à garder à l'esprit, aussi, est que les cookies pour example.com seront également envoyés à des demandes s1.example.com comme « s1. » est un sous-domaine à example.com. Vous devez utiliser www. (ou tout autre sous-domaine de votre choix) afin de séparer les espaces de cookies. Deuxièmement, si vous décidez qu'un domaine sans cookie est réellement quelque chose qui vaut la peine d'être essayé, parlons de l'implémentation. La solution de Shikhar est mauvaise! Bien que la solution semble fonctionner à la surface, elle va à l'encontre du but de l'utilisation d'un domaine sans cookie. Pour chaque image, l'URL s1. est d'abord essayée. L'URL s1. effectue ensuite une redirection vers le domaine www. qui déclenche une deuxième requête http. C'est une perte, peu importe comment vous le regardez. Ce dont vous avez besoin est un réécrire, qui modifie l'URL en interne sur le serveur Web, sans même se rendre compte du navigateur.

Pour simplifier, je suppose que tous les domaines pointent vers le même répertoire, de sorte que www.example.com/something = example.com/something = s1.example.com/something = blub.example.com/something. Cela rend les choses plus simples si vous avez vraiment besoin de stocker les images physiquement dans "www.example.com/images".

Je recommande un .htaccess qui ressemble un peu quelque chose comme ceci:

# Turn on rewrites 
RewriteEngine On 

# Rewrite all requests for images from s1, so they are fetched from the right place 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
# Prevent an endless loop from ever happening 
RewriteCond %{REQUEST_URI} !^/images 
RewriteRule (.+) /images/$1 [L] 

# Redirect http://s1.example.com/ to the main page (in case a user tries it) 
RewriteCond %{HTTP_HOST} ^s1\.example\.com 
RewriteRule ^$ http://www.example.com/ [R=301,L] 

# Redirect all requests with other subdomains, or without a subdomain to www. 
# Eg, blub.example.com/something -> www.example.com/something 
#  example.com/something  -> www.example.com/something 
RewriteCond %{HTTP_HOST} !^www\.example\.com 
RewriteCond %{HTTP_HOST} !^s1\.example\.com 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# Place any additional rewrites below. 
+0

+1 pour une telle telle une telle nitro2k01 réponse insightfull !! Vous venez de me sauver des heures de travail en me convainquant à moi seul de contourner toute l'histoire sans cookie. Mon site utilise seulement 10 images, cela ne vaut pas la peine de rediriger l'ensemble des choses sur le sous-domaine. Alors que sur ce sujet, sauriez-vous si en termes de référencement, il est préférable d'utiliser yellowhorse.domain.com ou domain.com/yellowhorse? – Sam

1

Si vous voulez dire rediriger le trafic de www.example.com à s1.example.com, utilisez le htaccess suivant sur www.example.com

RewriteCond %{HTTP_HOST} ^(s1\.example\.com)
RewriteRule (.*) http://www.example.com%{REQUEST_URI}[R=301,NC,L]

Si ce n'est pas ce que vous cherchez, élaborez la question plus avant.

1

Juste pour l'information générale des gens qui comme moi peut-être enquêtant sur les avantages du système. D'après ce que je lis, il ne s'agit pas simplement de réduire les coûts indirects en éliminant les cookies envoyés avec des requêtes http. Apparemment, de nombreux navigateurs limitent les connexions maximales à 1 domaine/serveur à 6 concurrents. Donc, si vous avez un domaine séparé sur un serveur de diff, vous pouvez doubler cela à 12. Ce qui me semble être le principal potentiel ici pour un coup de pouce de vitesse sérieux.

De toute façon, si je comprends bien. L'autre domaine desservant le contenu statique doit être situé sur un autre serveur du domaine principal. Fait sens, avide utilisateur firefox et tweaker. Lorsque vous consultez les paramètres about: config dans firefox, les connexions maximales par serveur sont définies à 6 par défaut. Une personne peut l'augmenter manuellement jusqu'à un maximum de 8. Mais la plupart des utilisateurs de firefox ne passent probablement pas assez de temps à se familiariser avec la façon de modifier le navigateur et de laisser le maximum par défaut à 6.

les autres navigateurs sont définis par défaut, puis il existe d'anciennes versions de navigateurs qui sont toujours utilisées. Bottomline ... prend tout son sens: permettre au navigateur de doubler le nombre total de connexions en utilisant deux serveurs devrait être une amélioration du temps de chargement. En utilisant un sous-domaine sur le même serveur, une personne ne pourra pas en profiter.

0

Je pense que vous pouvez l'avoir en arrière, (ou très probablement je le fais). Pour clarifier, si vous implémentez un sous-domaine sans cookie & avez une URL de base de www. au moins dans ce cas, les cookies sont définis sur www, par exemple: un cookie principal setter est google analytics, alors lors de la définition de leur script sur mon site, il ressemble à ceci:

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'analytics-acc-#], 
['_setDomainName', '[www.valpocreative.com][1]'], 
['_trackPageview']); 

Vous pouvez voir ici que je mets mon domaine principal www, corrigez-moi si je me trompe dans mon cas je aurais besoin de rediriger www à sous-domaine non www & pas l'autre moyen de contourner. Ceci est également la configuration cname fait sur mon cpanel (cname= "cdn" pointant vers www.domain.com)