а еще попробовали в одной из форм для копии поставить ящик mail.ru, туда письма даже в спам не пришли.
очень странно, такая мысль была, но тк эти письма отправляются только на 2 рабочих мейла, никто пожаловаться что это спам не мог… даже попробовали дописать в футере письма стандартную фразу вида — Это письмо отправлено автоматически с сайта такого-то, и даже ссылку отписаться поставили… все-равно шлет их в таком виде
Это не формит перестал работать, а гугл отбивает ваши письма, судя по всему расценивая как спам.
На сайте настроено довольно много форм с отправкой заявок и обратной связи через FormIt. Все прекрасно работало до вчерашнего дня. Теперь гугл пишет, что не может доставить эти письма: This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its recipients. This is a permanent error. The following address(es) failed: ladyavolin@gmail.com SMTP error from remote mail server after end of data: host gmail-smtp-in.l.google.com [173.194.220.27]: 550-5.7.1 [31.184.196.12 12] Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please visit 550 5.7.1 support.google.com/mail/answer/188131 for more information. n76si25447980lfi.16 — gsmtp arablegko@gmail.com (generated from info@ARABLEGKO.ru) SMTP error from remote mail server after end of data: host gmail-smtp-in.l.google.com [173.194.220.27]: 550-5.7.1 [31.184.196.12 12] Our system has detected that this message is 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail, 550-5.7.1 this message has been blocked. Please visit 550 5.7.1 support.google.com/mail/answer/188131 for more information. n76si25447980lfi.16 — gsmtp
— This is a copy of the message, including all the headers. — Return-path: <arablegko@gmail.com> Received: from user6425 by nibbler.handyhost.ru with local (Exim 4.72) (envelope-from <arablegko@gmail.com>) id 1Zy6AI-000CEh-Tl; Mon, 16 Nov 2015 01:52:55 +0300 To: info@arablegko.ru Subject: =?UTF-8?B?0J/QuNGB0YzQvNC+INC40Lcg0YDQtdC30LTQtdC70LAg0JrQvtC90YLQsNC6?= =?UTF-8?B?0YLRiw==?= X-PHP-Script: arablegko.ru/index.php for 41.37.239.181, 41.37.239.181 X-PHP-Originating-Script: 6115:class.phpmailer.php Date: Mon, 16 Nov 2015 02:52:54 +0400 From: arablegko@gmail.com Cc: ladyavolin@gmail.com Message-ID: <333a8d4a63bc27589aee4f93b1881ccf@arablegko.ru> X-Priority: 3 X-Mailer: PHPMailer 5.2.8 (https://github.com/PHPMailer/PHPMailer/) MIME-Version: 1.0 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit

Срочно написать ответ клиенту по почте

Имя: ххххххх
Почта клиента: хххххх@ххххххх
Вопрос клиента: вопрос с сайта проверка доставки писем
В коде ничего особенного не правилось, модули никакие не переставлялись…
1. Внешний (301) редирект выполняет не Apache, а modx (судя по всему, анализирует содержимое полей глобальной переменной $_SERVER — иначе как modx узнает, что на уровне веб-сервера был изменён URI ресурса, который ему втюхали)
Всё так и есть. При включенных дружественных URL и включенной опции (friendly_urls_strict) в методе (modRequest::_cleanResourceIdentifier()) выполняется внешний (301) редирект с внешнего URI (запрошенного со стороны браузера) на внутренний URI того ресурса, который должен отображаться:
/** * Cleans the resource identifier from the request params. * * @param string $identifier The raw identifier. * @return string|integer The cleansed identifier. */ public function _cleanResourceIdentifier($identifier) { if (empty ($identifier)) { ... } elseif ($this->modx->getOption('friendly_urls', null, false) && $this->modx->resourceMethod == 'alias') { $containerSuffix = trim($this->modx->getOption('container_suffix', null, '')); $found = $this->modx->findResource($identifier); if ($found === false && !empty ($containerSuffix)) { ... } elseif ((integer) $this->modx->getOption('site_start', null, 1) === $found) { ... } else { if ($this->modx->getOption('friendly_urls_strict', null, false)) { $requestUri = $_SERVER['REQUEST_URI']; $qsPos = strpos($requestUri, '?'); if ($qsPos !== false) $requestUri = substr($requestUri, 0, $qsPos); $fullId = $this->modx->getOption('base_url', null, MODX_BASE_URL) . $identifier; $requestUri = urldecode($requestUri); if ($fullId !== $requestUri && strpos($requestUri, $fullId) !== 0) { $parameters = $this->getParameters(); unset($parameters[$this->modx->getOption('request_param_alias')]); $url = $this->modx->makeUrl($found, $this->modx->context->get('key'), $parameters, 'full'); $this->modx->sendRedirect($url, array('responseCode' => 'HTTP/1.1 301 Moved Permanently')); } } ... } } else { ... } return $identifier; }
Это штатные действия modx, которые реализуют логику «строгих» (канонических) URL при включении опции (friendly_urls_strict):
Если выбрано «Да», неканонические запросы, соответствующие ресурсу, будут перенаправлены с кодом 301 на канонический URI для этого ресурса. WARNING: Do not enable if you use custom rewrite rules which do not match at least the beginning of the canonical URI. For example, a canonical URI of foo/ with custom rewrites for foo/bar.html would work, but attempts to rewrite bar/foo.html as foo/ would force a redirect to foo/ with this option enabled.
Поэтому, если одновременно необходимо: а) исключить URI-дубли страниц включением опции (friendly_urls_strict) (необходимо для SEO) б) на уровне веб-сервера выполнять внутренний редирект с одного ресурса на другой
то нужно будет выполнить следующие действия: 1. Включить опцию (friendly_urls_strict) 2. Прописать требуемые директивы для редиректа в настройках веб-сервера (или в .htaccess)
3. В плагине на событии (OnHandleRequest) (последнее событие, которое генерируется до вызова метода modRequest::_cleanResourceIdentifier()) установить эту опцию в значение (false) для тех исходных URL, для которых выполняется внутренний редирект на уровне веб-сервера (выявить такие ситуации можно сравнением значения глобальной переменной $_SERVER['REQUEST_URI'] и значением переменной запроса q ($modx->getOption('request_param_alias')) — именно так и делает метод modRequest::_cleanResourceIdentifier())
4. (НЕ ОБЯЗАТЕЛЬНО) В плагине на событии (OnWebPageInit) (первое событие, которое генерируется после вызова метода modRequest::_cleanResourceIdentifier()) установить эту опцию в исходное значение (исходное значение при этом нужно запомнить в предыдущем плагине).
P.S. При таком подходе в тех случаях, когда выполняется внутренний редирект на уровне веб-сервера, контролировать уникальность внешних URL придётся самому (поскольку для этих случаев описанными выше действиями мы отключаем такой контроль со стороны modx).
Артер, спасибо на добром слове) Сдаваться конечно же не будем)
Друпал, к слову фреймворк, не CMS, но ничего. Если он есть, значит он кому-то нравится. Мы не пытаемся весь мир переучить на MODX, мы просто пользуем то, что нам больше нравится, и помогаем по мере сил тем, кто с ним тоже пытается работать.
Проблемы… как же без них)), но нельзя сдаваться, они решаемы, надо лишь приложить усилие!!)) Николай, это совпадение, не думаю), а может и судьба — случайно попал на сайт modx club, точнее заметил название это, когда в свободное время от кодинга решил посмотреть готовые js скрипты (посмотреть что делают, фантазию поднять свою) и мне начали попадаться названия статей «урок создания… на modx», решил узнать что за modx такой, зашел сюда, прочел, скачал, установил, был приятно удивлен, всё сделано отлично, как я стремился сделать на своей cms разработке… но modx превосходит мои труды. У меня план был тоже сделать такую высокоразвитую cms с огромным функционалом, иметь команду, иметь аудиторию. Да, я добился и низких высот, сделал пусть не высокоразвитую cms, но она была проста и практична (tpl шаблонизация, pdo php, json) для создания динамичного сайта с очень малым потреблением системных ресурсов, пару человек в команде, аудитория на более 100 человек. Всё вроде бы хорошо, но есть моменты, как например, мне сложно найти человека, который не бросит (не забьет) на всё это дело… да актуальность проекта низка. Людям нужно что-то большее, чем простой скромный функционал, им нужно как modx. И я готов снова тратить силы на разработку сайтов, но уже с вами, Николай. Функционал вы сделали очень хорошо на 5+ и вижу не сдаетесь в своем деле, я думаю дальнейшее развитие сайта приведет к большему успеху — стать самой популярной cms, чем joomla drupal (для меня эти cms темный лес + потребляют много ресурсов и сложны в разработке, когда я пытался на них сделать сайт), на modx всё куда проще приходится =) у меня прям новое вдохновение родилось))
Скидка указывается в процентах и учитывается на весь заказ. То есть пока нельзя указать отдельным товарам размер скидки будет неплохо сделать: 1. скидка на все товары 2. скидка на определенный каталог товаров 3. скидка на определенный товар при этом 2 и 3 могут взаимосвязаны
Если в корне сайта создать файл resource0.html (с содержимым, например, OK), а в .htaccess прописать те же самые директивы, но без участия modx (т.е. без вызова index.php):
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^test\.html$ resource0.html [QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ resource0.html?q=$1 [L,QSA]
то никаких артефактов наблюдаться не будет — будет выполнен внутренний редирект на файл resource0.html (в браузере отобразится текст «OK», при этом в строке браузера останется исходный URL site.ru/test.html).
Отсюда делаем 2 вывода: 1. Внешний (301) редирект выполняет не Apache, а modx (судя по всему, анализирует содержимое полей глобальной переменной $_SERVER — иначе как modx узнает, что на уровне веб-сервера был изменён URI ресурса, который ему втюхали) 2. Данный вопрос здесь — очень в тему ))
P.S. На 50% проблема решена. Дело за малым — исходники modx…
Если в корне сайта создать файл resource0.html (с содержимым, например, OK), а в .htaccess прописать те же самые директивы, но без участия modx (т.е. без вызова index.php): RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^test\.html$ resource0.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ resource0.html?q=$1 [L,QSA] то никаких артефактов наблюдаться не будет — будет выполнен внутренний редирект на файл resource0.html (в браузере отобразится текст «OK», при этом в строке браузера останется исходный URL site.ru/test.html).
Отсюда делаем 2 вывода: 1.Внешний (301) редирект выполняет не Apache, а modx (судя по всему, анализирует содержимое полей глобальной переменной $_SERVER — иначе как modx узнает, что на уровне веб-сервера был изменён URI ресурса, который ему втюхали) 2.Данный вопрос здесь — очень в тему ))
P.S. На 50% проблема решена. Дело за малым — исходники modx…