Предполагая, что вы используете Symfony2 AppCache, а не Varnish. AppCache - это обратный прокси php: он кэширует ответ URI и заголовки процессов. Очевидно, что следующие URIs:
различны, поэтому трюк будет сделать их равными для обратного прокси-сервера. Вы можете сделать это на многих уровнях:
- на веб-сервере
- на
Request
объекта
- на AppCache хранения
ИМО простое решение, чтобы удалить их из Request
в создание. Следующий код делает трюк непосредственно в app.php, если вы хотите, чтобы вы могли сделать то же самое с подклассом объекта Request, но вам придется иметь дело с boostrap.
require_once __DIR__.'/../app/AppKernel.php';
require_once __DIR__.'/../app/AppCache.php';
$kernel = new AppKernel('prod', false);
$kernel->loadClassCache();
$kernel = new AppCache($kernel);
Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
//Modify query string here
$qs = $request->server->get('QUERY_STRING');
if ('' != $qs) {
$parts = array();
foreach (explode('&', $qs) as $chunk) {
$param = explode("=", $chunk);
if (!$param || !in_array($param[0], array('gclid', 'x', 'y', 'utm_source', 'utm_medium', 'utm_campaign', 'utm_content'))) {
$parts[] = $chunk;
}
}
$request->server->set('QUERY_STRING', implode('&', $parts));
}
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Я бы не позволить пользователям видеть эти параметры запроса. Вместо этого используйте фильтр и перенаправляйте на простой URL-адрес. – Marek
Не будут ли эти переменные собираться с помощью сценариев Google Analytics? Это означало бы, что перенаправление javascript не потребуется? – jcroll
Вы делаете что-то на стороне сервера с помощью этих определенных параметров запроса? – LFI