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

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

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

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

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

Спасибо

Ответ 1

Данные POST отбрасываются при перенаправлении, так как клиент выполнит запрос 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 и избежать возможных проблем с дублирующимся контентом.

Ответ 2

Использование 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

- Wikipedia

Ответ 3

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

Подумайте об использовании средства перезаписи URL, например Tuckey URLrewriteFilter или apache mod_rewrite.

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