В этом примере предполагается, что партнерские URL имеют вид http: / / seophp.
example.com/Products/SEO-Toolbox-Сб/Link-Juice-P31.html?aff_id=987, a
перенаправление выполняется на адрес http://seophp.example.com/Products/
SEO-Toolbox-C6/Link-Juice-P31.html.
Перенаправление партнерских URL с ключевыми словами
1. Откройте файл .htaccess и найдите строку, которая выполняет подмену URL-
адресов продукта с ключевыми словами:
# Подмена URL-адресов с ключевыми словами
RewriteRule Products/.*-С([0-9]+)/.*-Р([0-9]+)\.html$
/product.php?category_id=$l&product_id=$2 [L]
Измените эту строку, добавив в ее конец следующую информацию:
# Подмена URL-адресов с ключевыми словами
RewriteRule ^Products/.*-C([0-9]+)/.*-P([0-9]+)\.html$
/product.php?category_id=$lfiproduct_id=$2 & %{QUERYSTRING} [L]
2. Внесите изменения в файл product. php:
<?php
/ / загрузка библиотеки для обработки перенаправлений
require_once 'include/url_redirect.inc.php';
// начало сеанса PHP
session_start();
// сохранение ID партнера
if (isset($_REQUEST['aff_id']))
{
$_SESSION['aff_id'] = $_REQUEST['aff _id' ] ;
}
// перенаправление на нужный URL с ключевыми словами, если это не он
fix_category_product_url();
// вывод информации о продукте
echo 'Вы выбрали продукт №' . $_GET['product_id'] .
' из категории №' . $_GET['category_id'];
// вывод информации о партнере
echo '<Ьг /ХЬг /> Вы попали сюда через партнера: ' ;
if (!isset($_SESSION['aff_id']))
{
echo '(нет партнера)';
)
else
{
echo $_SESSION['aff_id'];
}
3. Теперь проверьте свой новый сценарий. Первая проверка состоит в загрузке
страницы продукта без идентификатора партнера, например,
http://seophp.example.com/Products/SEO-Toolbox-C6/Link-Juice-P31.html
4. Затем добавьте в URL идентификатор партнера: загрузите адрес http: / /seophp.
example.com/Products/SEO-Toolbox-C6/Link-Juice-P31.html?aff_id=987.
Вы должны быть корректно перенаправлены на главную страницу продукта, но
с сохранением идентификатора партнера. То, что должно получиться, показано
на рис. 5.2.
Как видно на рис. 5.2, URL-адрес уже не содержит идентификатор партнера, но на
странице он остался. И это сделано с помощью лишь нескольких строк PHP-кода! Все началось, как всегда, с правила mod_rewrite:
RewriteRule Products/.*-С([0-9]+)/.*-Р([0-9]+)\.html$
4>/product.php?category_id=$lSproduct_id=$2fi%{QUERY_STRING) [L]
Фрагмент {QUERY_STRING} — это специальная переменная, предоставляемая
mod_rewrite, которая содержит строку запроса из URL. Правило RewriteRule все
так же описывает URL-адреса с ключевыми словами, содержащие строку запроса
(вроде http://seophp.example.com/Products/SE0-Toolbox-C6/Link-Juice-P31.
html?af f_id=987), но теперь эти параметры добавлены в подмененный URL.
В этом случае сценарий product.php при своем выполнении имеет доступ к параметру af fid. Код, добавленный в файл product .php, минимален и состоит из поверки наличия параметра af f_id в строке запроса. Если он там есть, значение идентификатора партнера запоминается в сеансе пользователя:
// начало сеанса РНР
session_start();
// сохранение ID партнера
if (isset($_REQUEST['aff_id']))
{
$_SESSION['aff_id' ] = $_REQUEST['aff_id'];
Само перенаправление выполняется с помощью нашей старой знакомой — функции f ix_category_product_url ( ) . Эта функция проверяет, совпадает ли URL с эталонным URL-адресом продукта, и, если не совпадает, автоматически выполняет перенаправление 301 на "правильный" URL. В данном случае этим правильным URL является адрес продукта, не содержащий параметр af fid.
// перенаправление на нужный URL с ключевыми словами, если это не он
fix_category_product_url();
При первой загрузке страницы продукта с идентификатором партнера выполняется перенаправление на нужную версию, которая не содержит параметров в строке запроса. После перезагрузки product. php управление доходит до кода вывода информации о продукте и идентификатора партнера. На этот раз идентификатор партнера читается из сеанса:
// вывод информации о партнере
echo ' Вы попали сюда через партнера: ';
if (!isset($_SESSION['aff_id']))
{
echo '(нет партнера)';
}
else
{
echo $_SESSION['aff_id'];
}
Пример № 1
Tagged: