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
.
Что сказал Рэй, все это правда, это просто дополнительный комментарий к вашему общему подходу.