Как регистрировать каждый доступ к моему сайту с 2-мя разными доменами - PullRequest
0 голосов
/ 28 июня 2009

У меня есть два разных домена, которые указывают на мою домашнюю страницу на одном сервере.

Я хочу регистрировать каждый доступ к моей домашней странице и регистрировать, какой домен использовал пользователь для доступа к моей домашней странице, как я могу это сделать?

Я попробовал mod_rewrite в Apache и войти в базу данных MySQL с помощью PHP, но все, что я мог сделать, - это бесконечные циклы.

Есть идеи?

EDIT:
Судя по твоим ответам, ты не понял, чего я хочу ...

Насколько я знаю, Google Analytics не позволяет мне дифференцировать используемый домен, если они оба указывают на один и тот же сайт, и это также не позволяет мне видеть, что к некоторым файлам, таким как изображения, обращались напрямую, а не через мои веб-страницы. .

Я также не могу просто использовать $ _SERVER ['HTTP_HOST'], потому что, как я только что сказал, я хочу регистрировать ВСЕ, как изображения и все другие файлы, каждый отдельный запрос, даже если он не существует.

Что касается Webalizer, я никогда не видел, чтобы он различал домены, он всегда предполагает настройку домена по умолчанию в учетной записи и использует его как root, он даже не отображает его. Я должен буду проверить это снова, но я не уверен, что это будет делать то, что я хочу ...

БЕСКОНЕЧНЫЙ ЦИКЛ:
Подход, который я пробовал, заключался в переписывании URL-адресов в Apche с помощью простого правила перезаписи, указывающего на сценарий PHP, сценарий PHP записывал запись в базу данных MySQL и отправлял пользователя обратно в файл с помощью функции header (). Примерно так:

.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 скрипт:

$url = $_GET['a'];
$domain = $_SERVER['HTTP_HOST'];

// Code to log the entry into the MySQL database

header("Location: http://$domain/$url");
exit();

Итак, я получаю доступ к некоторому файлу, указываю этот файл на сценарий PHP, и сценарий будет регистрировать и перенаправлять в этот файл ... Однако, когда PHP перенаправляет на этот файл, правила htaccess подберут его и перенаправят тоже скрипт PHP, создающий бесконечный цикл.

Ответы [ 4 ]

2 голосов
/ 28 июня 2009

Лучше всего было бы проанализировать логи сервера. Те покажут домен и запрос. Даже большинство общих учетных записей хостинга предоставляют доступ к журналам.

Если вы собираетесь пойти по пути перезаписи, вы можете использовать RewriteCond, чтобы проверить значение HTTP_REFERER и посмотреть, была ли ссылка на локальную ссылку или нет.

 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]

Вы можете также публиковать сообщения на форуме mod_rewrite . У них есть целый раздел о работе с доменами.

1 голос
/ 28 июня 2009

Если Google Analytics не ваша вещь,

$_SERVER['HTTP_HOST']

содержит используемый домен, вы можете войти в него (вместе со временем, браузером, путем к файлу и т. Д.). Нет необходимости в mod_rewrite, я думаю. Проверьте print_r ($ _ SERVER), чтобы увидеть другие вещи, которые могут быть интересны для регистрации.
Убедитесь, что все еще экранированы (mysql_real_escape_string ()) все значения журнала, например, тривиально легко внедрить SQL через строку пользовательского агента браузера.


Итак, я получаю доступ к некоторому файлу, указываю этот файл на сценарий PHP, и сценарий будет регистрировать и перенаправлять в этот файл ... Однако, когда PHP перенаправляет на этот файл, правила htaccess подберут его и перенаправят тоже скрипт PHP, создающий бесконечный цикл.

Можете ли вы проверить заголовки HTTP в RewriteCond? Если это так, попробуйте установить дополнительный заголовок вместе с перенаправлением в PHP (по договоренности пользовательские заголовки HTTP начинаются с 'X-', так что это может быть заголовок ('X-stayhere: 1');), и если заголовок X-stayhere равен В настоящее время RewriteCond завершается ошибкой и не перенаправляет браузер на сценарий PHP.

Если, однако, вы можете создать скрипт для загрузки журналов сервера и запустить их через какой-нибудь бесплатный анализатор журналов, я бы воспользовался этим. Наличие двух перенаправлений для каждого запроса - это довольно трудоемкая задача (и если бы я не спал, я мог бы найти другие решения)

0 голосов
/ 29 июня 2009

Почему бы не использовать встроенную функцию журнала доступа в apache? В Apache есть функция « piped log », которая позволяет перенаправить журнал доступа в любую программу.

CustomLog "|/path/to/your/logger" common 
0 голосов
/ 28 июня 2009

Разве Google Analytics не предоставляет эту опцию? Или не могли бы вы проанализировать файлы журнала вашего сервера?

...