Nginx и метки openStat

Вопрос такой — есть переходы с рекламных систем, которые передают адрес сайта с определенными метками. Например, «мойсайт.ру/?openstat=blahblahblah». Как вы понимаете, nginx перекидывает этот запрос на "/", т.е. на «чистый» адрес без метки и некоторые скрипты не срабатывают. Как сделать исключение для запросов, содержащих "?_openstat="?

И вопрос по теме — почему тот же параметр mFilter2 (пагинация или параметры цены/цвета) не перекидывает на "/"?

Заранее благодарен.
Wassi Wassinen
23 октября 2014, 10:59
modx.pro
1
1 295
0

Комментарии: 11

Wassi Wassinen
23 октября 2014, 18:01
0
''
    Wassi Wassinen
    23 октября 2014, 23:45
    0
    *'
      Василий Наумкин
      24 октября 2014, 09:32
      0
      Ты бы лучше настройки nginx показал, вместо ковычек и звёздочек.
        Wassi Wassinen
        24 октября 2014, 11:27
        0
            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;
        
        Все остальное стандартный конфиг по твоему мануалу.
          Василий Наумкин
          24 октября 2014, 11:34
          0
          Я не вижу здесь никаких правил про openstat, так что дело явно не в nginx.
            Wassi Wassinen
            24 октября 2014, 12:54
            0
            Есть вот такой плагин на загрузку документов.

            <?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, но не помогло.
              Олег Максименко
              24 октября 2014, 13:02
              +1
              !$_GET['%ms|%'] && !$_GET['%openstat%']
              это какой-то новый секретный способ поиска по подстроке? :)
                Wassi Wassinen
                24 октября 2014, 13:05
                0
                Дружище, я в принципе не понял что ты хотел этим сказать. Если это сарказм, то прошу, поделись знанием, оставь насмешки. Если это предметный вопрос — я не знаю, что на него ответить.
                  Василий Наумкин
                  24 октября 2014, 14:47
                  0
                  Олег имеет в виду, что должно быть так:
                  !isset($_GET['msorder']) && !isset($_GET['openstat'])
                  А ты работаешь с массивом, как со строкой, да еще и непонятный ключ указываешь.

                  По всей видимости, пытаешься использовать регулярное выражение, которое должно выглядеть так:
                  !preg_match('%(msorder|openstat)%', $_SERVER['REQUEST_URI'])

                  $_SERVER['REQUEST_URI'] — строка, $_GET — массив.
                    Wassi Wassinen
                    24 октября 2014, 15:11
                    +1
                    Спасибо! Теперь понял. Действительно, так заработало.
                      Wassi Wassinen
                      24 октября 2014, 15:11
                      +1
                      Спасибо закину.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11