Nginx и метки openStat
Вопрос такой — есть переходы с рекламных систем, которые передают адрес сайта с определенными метками. Например, «мойсайт.ру/?openstat=blahblahblah». Как вы понимаете, nginx перекидывает этот запрос на "/", т.е. на «чистый» адрес без метки и некоторые скрипты не срабатывают. Как сделать исключение для запросов, содержащих "?_openstat="?
И вопрос по теме — почему тот же параметр mFilter2 (пагинация или параметры цены/цвета) не перекидывает на "/"?
Заранее благодарен.
И вопрос по теме — почему тот же параметр mFilter2 (пагинация или параметры цены/цвета) не перекидывает на "/"?
Заранее благодарен.
Комментарии: 11
Ты бы лучше настройки nginx показал, вместо ковычек и звёздочек.
location / { try_files $uri $uri/ @rewrite; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } location ~ \.php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass backend-blah; } location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp)$ { access_log off; expires 10d; break; } location ~ /\.ht { deny all;Все остальное стандартный конфиг по твоему мануалу.
Я не вижу здесь никаких правил про openstat, так что дело явно не в nginx.
Есть вот такой плагин на загрузку документов.
<?php
if ($modx->event->name == 'OnLoadWebDocument') {
$uri = $_SERVER['REQUEST_URI'];
if ($modx->resource->isfolder && substr($uri, -1) != '/' && !$_GET['page'] && !$_GET['%ms|%'] && !$_GET['%openstat%']) {
$modx->sendRedirect($modx->makeUrl($modx->resource->id),array('responseCode' => 'HTTP/1.1 301 Moved Permanently'));
}
}
Добавил в него исключение для openstat, но не помогло.!$_GET['%ms|%'] && !$_GET['%openstat%']
это какой-то новый секретный способ поиска по подстроке? :)
Дружище, я в принципе не понял что ты хотел этим сказать. Если это сарказм, то прошу, поделись знанием, оставь насмешки. Если это предметный вопрос — я не знаю, что на него ответить.
Олег имеет в виду, что должно быть так:
По всей видимости, пытаешься использовать регулярное выражение, которое должно выглядеть так:
$_SERVER['REQUEST_URI'] — строка, $_GET — массив.
!isset($_GET['msorder']) && !isset($_GET['openstat'])
А ты работаешь с массивом, как со строкой, да еще и непонятный ключ указываешь. По всей видимости, пытаешься использовать регулярное выражение, которое должно выглядеть так:
!preg_match('%(msorder|openstat)%', $_SERVER['REQUEST_URI'])
$_SERVER['REQUEST_URI'] — строка, $_GET — массив.
Спасибо! Теперь понял. Действительно, так заработало.
Спасибо закину.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.