Apache 301 Redirect и сохранение почтовых данных

Я реализовал SEO URL с помощью перенаправлений Apache 301 наredirect.cfm» в корне сайта, который обрабатывает все создание URL-адресов и доставку контента.

Почтовые данные теряются во время перенаправления 301.

Пока не удалось найти решение, попытались исключить метод post из перезаписей - в худшем случае мы могли бы использовать URL-адреса старого типа для методов post.

Есть ли что-то, что можно сделать?

Спасибо

 Daniel Cook29 нояб. 2012 г., 16:15
На самом деле другое решение, которое было бы лучше для меня, это рассчитать целевой URL-адрес SEO для формы и действия, которые. Дополнительный запрос, но URL будет сохранен и 301 перенаправление не будетне нужно.

Ответы на вопрос(3)

путь. Это проблема производительности (особенно для мобильных устройств, но в целом), так как она удваивает количество запросов на вашу страницу.

Подумайте об использовании инструмента перезаписи URL, как у TuckeyURLrewriteFilter или апач.mod_rewrite

Все, что Рэй сказал, - правда, это всего лишь дополнительный комментарий к вашему общему подходу.

 Daniel Cook31 мар. 2014 г., 10:18
Мы взглянули на вышесказанное, пытаясь понять, чтовозможно. Пример предложения Стандартный URL:example.com/... Переписать URL:example.com/list/fruit/asc/30/1  Однако мои URL-адреса будут domain.com/folder1/folder2/folder3/index.cfm?id=12345 и разрешены к domain.com/area/id-title-of-the-article/ Информация недоступна в БД и потребует некоторых запросов к БД для определения заголовка и области.
Решение Вопроса

поскольку клиент выполнит запрос GET по URL-адресу, указанному в 301. Период.

Единственный вариант - преобразовать параметры POST в параметры GET и добавить их в конец URL-адреса, который выПереадресация на. Это невозможно сделать при перезаписи файла .htaccess.

Один из вариантов - перехватить POST-запросы на URL-адрес, который будет перенаправлен, и передать его на страницу для обработки перенаправления. Вы'Мне нужно сделать транспонирование параметров в коде, а затем выдать заголовок redirect с добавленным параметром new url.

Обновление. Как указано в комментариях к этому ответу, если вы перенаправляете на другой URL-адрес с указанием параметров POST и этот URL-адрес также доступен без параметров (или параметры являются переменными), необходимо указать ссылку на канонический URL-адрес страницы ,

Скажем, перенаправления формы POST перенесены на следующий ресурс GET:

   http://www.example.com/finalpage.php?form_data_1=123&form_data_2=666

Вы добавили бы эту ссылку в раздел заголовка страницы:

   <link rel="canonical" href="http://www.example.com/finalpage.php">

Это гарантирует, что вся ценность SEO будет данаhttp://www.example.com/finalpage.php и избежать возможных проблем с дублированным контентом.

 Daniel Cook29 нояб. 2012 г., 16:27
Спасибо яЯ собираюсь предположить, что подобное может заставить формы входа отображать имя пользователя / пароль в адресной строке браузера. Я ориентируюсь на обновление каждой формы для публикации на рассчитанный динамический URL-адрес SEO.
 Ray19 авг. 2014 г., 16:42
@ daniel.gindi Также яЯ не применяю все варианты структуры URL-адреса. Например/index?id=19283b&post=2211 против/articles/great-dallas-restaurantsПредполагая, что статья о хороших ресторанах в Далласе, МОЖЕТ иметь лучшее общее влияние на SEO, используя второй URL.
 daniel.gindi19 авг. 2014 г., 21:52
@Ray Да, это другое дело. Я обращался к различным URL-адресам, которые будут созданы путем преобразования форм POST в GET
 daniel.gindi20 авг. 2014 г., 18:53
@Ray Ну, от моего (и друзей ') опыт - они на самом деле это делают. Пока существует URL-адрес, и вы его использовали (даже если пришли изформа») - это можно сканировать, и Google найдет его. Однако есть решение, использующее роботы или добавление тегов CANONICAL на страницы.
 Daniel Cook29 нояб. 2012 г., 16:53
Я запутался, ям ясно сейчас. спасибо, попробую.
 daniel.gindi19 авг. 2014 г., 17:29
@ Луч яБоюсь, вы снова ошибаетесь, насчет первого пункта. Даже если два URL-адреса очень похожи, Google предложит вам два URL-адреса с одинаковым содержанием. Вам придется объявить их каноническими. Но о втором пункте все верно: URL с контекстной информацией в самом URL лучше с точки зрения SEO.
 Daniel Cook29 нояб. 2012 г., 16:37
Спасибо, может быть, это сработает. Apache отправляет все почтовые запросыredirectPost.cfm»это сохраняет данные формы в session.form и перенаправляет URL (теряя данные поста). Однажды 'redirect.cfm» забирает его, записывает все данные session.form обратно в область формы перед доставкой контента.
 Ray20 авг. 2014 г., 19:02
@ daniel.gindi Я понимаю твою точку зрения. Я согласен, что CANONICAL (без параметров GET) может гарантировать, что окончательный перенаправленный URL-адрес ограничит SEO-сок только одной перестановкой URL-адреса. Если Google обнаруживает использование таких URL-адресов, использование canonical защитит вас. Если они'нет, это неЭто больно, так как это все еще проясняет. Обновлю мой ответ, чтобы включить эту деталь. Спасибо!
 daniel.gindi20 авг. 2014 г., 20:59
@ Хорошо, теперь я чувствую себя комфортно, голосуя против твоего ответа.теперь безопасно ;-)
 Daniel Cook29 нояб. 2012 г., 16:44
Доу, только что понял, перенаправление наredirectPost.cfm» потеряет почтовые данные. Возможно другой тип перенаправления, 307? хранит почтовые данные, мне придется посмотреть это.
 daniel.gindi03 февр. 2013 г., 15:59
@ Луч яБоюсь, что вы ошибаетесь, насчет SEO. Любая система будет рассматривать полный URL как уникальный. Это включает в себя также параметры URL (ака "Строка запроса"). Таким образом, / index? 1 и / index? 2 - разные URL. И они разные. Тот'Это причина того, что Google будет рассматривать их как фактические разные URL.
 Ray20 авг. 2014 г., 15:22
@ daniel.gindi интересно. Я'Мы слышали о такой статистике в chrome, а также о том, что Google Analytics отправляет обратно. Тем не менее, яЯ еще не уверен, что они на самом деле индексируются, если фактический URL не сканируется, но стоит за 301 из запроса POST. Я'Я определенно не авторитет в этом, поэтому я начну следить за тем, чтобы они отображались в моих инструментах для веб-мастеров в качестве проиндексированных страниц. Я нене думаю, что этоОни находятся вне пределов разума, потому что все данные поступают в один и тот же источник, Google.
 Ray29 нояб. 2012 г., 16:47
@DanielCook, ты неt перенаправить на свою страницу обработчика перенаправления, вы просто обслуживаете его и выполняете одно перенаправление на этой странице. Нет редиректа 30x сохраняет параметры записи
 Ray19 авг. 2014 г., 16:38
@ daniel.gindi Спасибо, что отметили неоднозначность. Я думаю, что я неясно в моем комментарии. Я не'Это означает, что URL-адреса с разными параметрами get считаются одним и тем же ресурсом для целей SEO. Я полностью согласен с вашей точкой зрения/index?1 знак равноindex?2, То, что я хотел передать, я не сделалНе думаю, что похожие URL-адреса, использующие параметры GET и on, не повлияли на ценность SEO. Например, выбор между близко сформированными URL/index?id=1 против просто/index для страницы, которую я неЯ думаю, что так или иначе, это повлияет на SEO.
 Ray29 нояб. 2012 г., 16:30
@DanielCook Вы также можете поместить переменные POST в сеанс, если перенаправление происходит на тот же URL-адрес домена, и вы не 'не хочу их в URL. Просто нене забудьте принудительно очистить сессию перед выполнением перенаправления. Я неЯ не думаю, что параметры GET влияют на SEO URL, но это было бы просто визуально некрасиво.
 Ray19 авг. 2014 г., 18:00
@ daniel.gindi Думаю, мне нужно быть понятнее. Я'Я не предлагаю иметь два активных URL-адреса для одного и того же источника - это имеет серьезные последствия для SEO, и вы должны быть осторожны и пометить один канонический, как вы упоминаете. Мои комментарии были предназначены только для рассмотрения факторов, о которых нужно подумать, когда вы выбираете один URL-адрес для использования для конкретного ресурса, когда выбирается одна структура URL-адреса или другая, что было бы лучше с точки зрения SEO или что, вероятно, не сильно влияет на SEO.
 Ray19 авг. 2014 г., 22:01
@ daniel.gindi Я думаю, что если первоначальный перенаправляемый запрос - это POST,не может быть никакого влияния SEO. Я думаю, что единственные URL-адреса, перечисленные или отслеживаемые в поисковых системах, таких как Google, - это ссылки в тегах привязки (это все запросы GET). Ни один легальный сканер не должен отправлять запросы в виде POST-адресов на URL-адрес формы, поэтому ни один сканер не должен перенаправляться на новый окончательный URL-адрес с добавленными параметрами get, поэтому поисковые системы никогда не должны 'увидеть' URL с параметрами в них. Я знаю, что люди подозревают Google в отправке форм, но яя никогда не встречал POST-URL в моих поисках.
 daniel.gindi20 авг. 2014 г., 06:59
@Ray. Что действительно происходит, так это то, что ваш браузер, скажем, Chrome, видит эти URL-адреса, потому что вы посетили их. Chrome отправляетанонимная статистика ", который включает в себя URL для сканирования. Мы наблюдали такое поведение в прошлом и привыкли помещать файл ROBOTS на каждый сайт, который еще не запущен, потому что Google узнал URL еще до нас ...

Используя307 должно бытьименно то, что вы хотите-

307 Temporary Redirect (since HTTP/1.1)
In this case, the request should be repeated with another URI; however, future requests
should still use the original URI.[2] In contrast to how 302 was historically implemented,
the request method is not allowed to be changed when reissuing the original request. For
instance, a POST request should be repeated using another POST request

Википедия

 Froggiz28 окт. 2015 г., 23:50
это сработало для меня, спасибо!
 chrismarx28 мар. 2014 г., 17:09
Это работает, и вы можете сохранить эффективность перенаправлений 301, просто применив 307 перенаправлений только к запросам POST
 Aditya Nagrath27 июл. 2017 г., 07:41
Это спасло меня от временного перенаправления остальных API во время развертывания приложений.
 Skippy le Grand Gourou02 окт. 2015 г., 23:21
@chrismarx Как ты это делаешь?
 ElOjcar27 авг. 2018 г., 13:16
Да сэр! Идеальный ответ !!
 Felipe Francisco11 июн. 2018 г., 19:41
После попытки 301, 308 и 302 ваш ответ спас меня! Спасибо чувак!
 Adriano Pedro01 мар. 2019 г., 18:43
Здравствуйте, а как насчет запроса IP. Я имею в виду происхождение запроса? Это сохранилось?
 Fred15 авг. 2016 г., 22:23
Да, это работает для меня тоже. Но что-то действительно странное: с точно такими же правилами, изменяя R = 301 на R = 307, RewriteRule не 'т работать одинаково!
 chrismarx13 окт. 2015 г., 21:34
Я добавил это: RewriteCond% {REQUEST_METHOD} = POST, а затем в следующей строке это: RewriteRule /my-app/(.*)$ / $ 1 [R = 307]
 dmmd22 нояб. 2016 г., 20:44
Чувак, это действительно спасло меня от потаения часов. Просто добавьте несколько ключевых слов тому, у кого могут быть проблемы сLaravel или желюмен И егоRedirect Trailing Slashes If Not A Folder, Кроме того, этот ответ особенно полезен для людей, разрабатывающихAPI.

Ваш ответ на вопрос