Apache 301 перенаправление и сохранение данных post

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

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

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

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

спасибо

3 ответов


данные POST отбрасываются при перенаправлении, так как клиент выполнит запрос GET на URL, указанный 301. Период.

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

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

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

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

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

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

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

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


С помощью 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

-Википедия


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

подумайте об использовании переписывания URL-адресов инструмент, как Тьюки по URLrewriteFilter или apache mod_rewrite.

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