<?php
error_reporting(0);
if( isset($_GET['go']) ) {
$go = $_GET['go'];
header("Location: $go");
exit;
}
define('FRONTEND_ADDRESS', '');
define('BACKEND_ADDRESS', 'http://ourhost.com/dor1/'); // указываем урл дорвея, который мы сгенерили (бэкэнд)
define('BACKEND_ADDRESS_IP', ''); // можно вписать айпи хоста, где лежит реальный дор - не будет тратиться время на резолв домена, не критично
define('FRONTEND_NAME', '');
define('BACKEND_NAME', '');
define('ID', '');
define('SID', preg_replace('/[^\w]/', '-', ((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'])));
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && preg_match('/^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$/', $_SERVER['REQUEST_URI'])) {
header($_SERVER['SERVER_PROTOCOL'] . '/1.1 304 Not Modified');
exit;
}
$query['id'] = ID;
$query['sid'] = SID;
$query['realvisitor'] = base64_encode($_SERVER['REMOTE_ADDR']);
$query['realvisitora'] = base64_encode($_SERVER['HTTP_USER_AGENT']);
$query = $query + $_GET;
if (isset($_GET['_request_'])) {
unset($query['_request_']);
$_request_url = BACKEND_ADDRESS . str_ireplace(' ', '%20', $_GET['_request_']) . '?' . http_build_query($query);
} else {
$_request_url = BACKEND_ADDRESS . '?' . http_build_query($query);
}
$cookies = array();
foreach($_COOKIE as $key=>$value) {
$cookies[] = $key . '=' . urlencode($value);
}
$cookies = implode("; ", $cookies);
$ch = curl_init();
$url = $_request_url;
if (BACKEND_ADDRESS_IP) {
$url_data = parse_url($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: ' . $url_data['host']));
if (!empty($url_data['query'])) {
$url_data['path'] .= '?' . $url_data['query'];
}
$url = $url_data['scheme'] . '://' . BACKEND_ADDRESS_IP . $url_data['path'];
}
curl_setopt($ch, CURLOPT_URL, $url);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
}
curl_setopt($ch, CURLOPT_USERAGENT, 'Site Proxy');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_COOKIE, $cookies);
if (isset($_SERVER["HTTP_REFERER"]) && $_SERVER["HTTP_REFERER"] && strpos(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST), parse_url(FRONTEND_ADDRESS, PHP_URL_HOST)) === FALSE) {
curl_setopt($ch, CURLOPT_REFERER, $_SERVER["HTTP_REFERER"]);
}
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
$header = substr($response, 0, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
$body = substr($response, curl_getinfo($ch, CURLINFO_HEADER_SIZE));
if (preg_match('/^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$/', $_SERVER['REQUEST_URI']) && preg_match("/Last-Modified: (.*)/i", $header, $matches)) {
if (isset($matches[1])) {
header('Last-Modified: ' . $matches[1]);
header('Expires: Thu, 31 Dec 2037 23:55:55 GMT');
header('Cache-Control: max-age=315360000');
preg_match("/Content-Type: (.*)/i", $header, $matches);
if (isset($matches[1])) {
header('Content-type: ' . $matches[1]);
}
preg_match("/Content-Length: (.*)/i", $header, $matches);
if (isset($matches[1])) {
header('Content-Length: ' . $matches[1]);
}
}
}
$headers = explode("\n", $header);
foreach($headers as $header){
if (strpos($header, 'Set-Cookie: ') === 0) {
$header = str_ireplace('Set-Cookie: ', '', $header);
$header = explode('; ', $header);
$cookie[0] = explode('=', $header[0]);
if(strlen($cookie[0][0]) && strlen($cookie[0][1])){
setcookie($cookie[0][0], $cookie[0][1], time()+60*60*24*365, '/');
}
} elseif (strpos($header, 'Location: ') === 0) {
header(str_ireplace(BACKEND_ADDRESS, FRONTEND_ADDRESS, $header));
}
}
$body = str_ireplace(BACKEND_ADDRESS, FRONTEND_ADDRESS, $body);
$body = str_ireplace(BACKEND_NAME, FRONTEND_NAME, $body);
echo $body;
?>
Сам пользуюсь, и код знакомый,
с theebooksellers и трумедиа )
Что-нибудь посерьезней обычно платно.
фидбурнер или что-то такое
location /folder/ {
try_files $uri $uri/ /folder/index.php?$args;
}
Проверь и нам расскажешь.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\?*$ /proxyfolder/index.php?_request_=$1 [L,QSA]
куда копать подскажи
только морда грузиться, а если тыкать по внутренним ссылкам то уже грузиться не донор а сам сайт.. надеюсь ясно выразился)
Кстати очень хороший блог спасибо автору ;)