HTACCESS / PHP - переписать URL, перенаправляя на другой URL - PullRequest
0 голосов
/ 04 февраля 2012

Я создаю веб-сайт со схемой рефералов, где URL-адрес реферала будет выглядеть примерно так: http://example.com/123456

. Я хотел бы отобразить URL-адрес просто как http://example.com/, но при этом сохранить 123456 иукажите реферальную точку.

Можно ли это сделать с помощью .htaccess mod_rewrite?что-то вроде

RewriteRule ^([0-9]+) ?ref=$1 [L]

будет работать для переадресации URL, но есть ли способ перенаправить сюда и отобразить http://example.com/ в адресной строке, без кода реферера?

Это, очевидно, будетбыло бы возможно с заголовками PHP, но я бы предпочел не использовать это, если это вообще возможно.

1 Ответ

4 голосов
/ 04 февраля 2012

Это невозможно сделать простым способом только с RewriteModule, поскольку HTTP является протоколом без сохранения состояния.Если вы удалите идентификатор реферала и перенаправите пользователя, вы больше не будете знать идентификатор во втором запросе.

Поэтому вам нужно сохранить идентификатор в файле cookie или сеансе с PHP и перенаправить пользователяс заголовком Location впоследствии.

htaccess

RewriteRule ^([0-9]+) index.php?ref=$1 [L]

index.php

if (isset($_GET["ref"])) {
  setcookie("refid", $_GET["ref"]);
  header("Location: http://example.com/");
  exit;
}
if (isset($_COOKIE["refid"])) {
  echo "You came from ref id: $_COOKIE[refid]";
} else {
  echo "You came without a ref id.";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...