2009-06-28 2 views
0

J'ai deux domaines différents qui pointent vers ma page d'accueil dans le même serveur.Comment connecter chaque accès à mon site Web avec 2 domaines différents

Je veux enregistrer chaque accès à ma page d'accueil et enregistrer quel domaine l'utilisateur a utilisé pour accéder à ma page d'accueil, comment puis-je faire?

J'ai essayé mod_rewrite dans Apache et je me suis connecté à une base de données MySQL avec PHP, mais tout ce que je pouvais faire, c'était des boucles infinies.

Des idées?

EDIT:
par vos réponses, je vois que vous ne l'avez pas ce que je veux ...

Pour autant que je sais Google Analytics ne me permet pas de différencier le domaine utilisé si elles Les deux pointent vers le même site et cela ne me permet pas non plus de voir que certains fichiers comme des images étaient directement accessibles au lieu de passer par mes pages Web.

Je ne peux pas simplement utiliser $ _SERVER ['HTTP_HOST'] car comme je viens de le dire, je veux enregistrer TOUT, comme les images et tous les autres fichiers, chaque requête, même si elle n'existe pas. Comme pour Webalizer, je n'ai jamais vu de différenciation entre les domaines, il suppose toujours la configuration par défaut du domaine dans le compte et l'utilise comme root, il ne l'affiche même pas. Je vais devoir le vérifier à nouveau, mais je ne suis pas sûr que ça va faire ce que je veux ...

INFINI LOOP:
L'approche que j'ai essayé impliqué réécrire les urls en Apche avec une règle simple Réécrire pointant vers un script PHP, le script PHP consignerait l'entrée dans une base de données MySQL et l'enverrait à nouveau au fichier avec la fonction header(). Quelque chose comme ceci:

.htaccess:

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.net [NC] 
RewriteRule ^(.*)$ http://www.domain1.net/logscript?a=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(www\.)?domain2\.net [NC] 
RewriteRule ^(.*)$ http://www.domain2.net/logscript?a=$1 [NC,L] 

PHP Script:

Alors, j'accéder à certains fichiers, pointez ce fichier dans le script PHP et le script log et rediriger vers ce fichier ... Cependant, lorsque PHP redirige vers ce fichier, les règles htaccess vont le ramasser et rediriger à nouveau le script PHP, créant une boucle infinie.

Répondre

2

La meilleure chose à faire serait d'analyser les journaux du serveur. Ceux-ci montreront le domaine et la demande. Même la plupart des comptes d'hébergement partagé donnent accès aux journaux.

Si vous voulez aller à la route de réécriture, vous pouvez utiliser RewriteCond pour vérifier la valeur HTTP_REFERER pour voir si le référenceur était un lien local ou non.

RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.net [NC] 
RewriteCond %{HTTP_REFERER} !^(.*)domain1(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domain1.net/logscript?a=$1 [NC,L] 

RewriteCond %{HTTP_HOST} ^(.*)domain2\.net [NC] 
RewriteCond %{HTTP_REFERER} !^(.*)domain2(.*)$ [NC] 
RewriteRule ^(.*)$ http://www.domain2.net/logscript?a=$1 [NC,L] 

Vous pouvez également poster dans le forum mod_rewrite. Ils ont une section entière sur la gestion des domaines.

+0

S'il vous plaît vérifier la question d'édition ... –

+0

Mis à jour ma réponse –

+0

Cela pourrait fonctionner, je vais devoir le tester ... Pas maintenant mais parce qu'il est 5 heures par ici ... Je vais rapporter. –

0

Est-ce que Google Analytics ne fournit pas cette option? Ou pourriez-vous pas analyser vos fichiers journaux du serveur?

+0

S'il vous plaît vérifier la question de modifier ... –

+0

Malheureusement, je ne sais pas comment vous aider dans ma position actuelle. Vous pouvez poser une question distincte avec des informations sur votre problème de boucle infinie avec votre solution, et nous pouvons l'aborder sous cet angle. Merci pour votre compréhension. –

+0

J'ai encore édité la question ci-dessus pour expliquer la boucle infinie. Pas besoin de créer une autre question Si vous le souhaitez, donnez simplement une réponse différente ci-dessous. –

1

Si Google Analytics est pas votre truc,

$_SERVER['HTTP_HOST'] 

détient le domaine qui est utilisé, vous pouvez vous connecter que (avec le temps, le navigateur, filepath etc). Pas besoin de mod_rewrite je pense. Vérifiez print_r ($ _ SERVER) pour voir d'autres choses qui pourraient être intéressantes à consigner.
Assurez-vous de toujours échapper (mysql_real_escape_string()) toutes les valeurs du journal, il est trivialement facile d'injecter du SQL via la chaîne user-agent du navigateur par exemple.


Alors, j'accéder à certains fichiers, pointez ce fichier dans le script PHP et le script enregistre et rediriger vers ce fichier ... Cependant, lorsque PHP redirige vers ce fichier, les règles htaccess saisiront up et rediriger à nouveau le script PHP, créant une boucle infinie.

Pouvez-vous vérifier les en-têtes HTTP dans le RewriteCond? Si oui, essayez de placer un en-tête supplémentaire à côté de la redirection en PHP (par convention, les en-têtes HTTP commencent par 'X-' donc ça pourrait être header ('X-stayhere: 1');), et si l'entête X-stayhere est présent, le RewriteCond échoue et il ne transfère pas le navigateur au script PHP. Si, cependant, vous pouvez cron un script pour télécharger les journaux du serveur et les exécuter via un analyseur de fichier journal freeware, j'irais avec cela à la place. Ayant deux redirections pour chaque demande est un peu de surcharge .. (et si j'étais plus éveillé, je pourrais être en mesure de trouver des solutions différentes)

+0

S'il vous plaît vérifier la question d'édition ... –

+0

vérifier la mise à jour :) – MSpreij

+0

Si la solution de Chris (ci-dessus) ne le résout pas, je vais essayer celui-ci. Cela semble aussi une solution plausible ... –

0

Pourquoi ne pas utiliser la construction du journal d'accès dans Apache? Apache dispose d'une fonction "piped log" qui vous permet de rediriger le journal d'accès vers n'importe quel programme.

CustomLog "|/path/to/your/logger" common 
+0

Je suis en hébergement mutualisé, je ne pense pas que ça marchera pour moi. –

Questions connexes