Вопрос по http-status-code-301, apache, rewrite, http-post – Apache 301 Redirect и сохранение почтовых данных

21

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

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

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

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

Спасибо

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

Ваш Ответ

3   ответа
49

Используя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

Википедия

Я добавил это: RewriteCond% {REQUEST_METHOD} = POST, а затем в следующей строке это: RewriteRule /my-app/(.*)$ / $ 1 [R = 307] chrismarx
@chrismarx Как ты это делаешь? Skippy le Grand Gourou
это сработало для меня, спасибо! Froggiz
Чувак, это действительно спасло меня от потаения часов. Просто добавьте несколько ключевых слов тому, у кого могут быть проблемы сLaravel или желюмен И егоRedirect Trailing Slashes If Not A Folder, Кроме того, этот ответ особенно полезен для людей, разрабатывающихAPI. dmmd
19

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

Спасибо яЯ собираюсь предположить, что подобное может заставить формы входа отображать имя пользователя / пароль в адресной строке браузера. Я ориентируюсь на обновление каждой формы для публикации на рассчитанный динамический URL-адрес SEO. Daniel Cook
Спасибо, может быть, это сработает. Apache отправляет все почтовые запросыredirectPost.cfm»это сохраняет данные формы в session.form и перенаправляет URL (теряя данные поста). Однажды 'redirect.cfm» забирает его, записывает все данные session.form обратно в область формы перед доставкой контента. Daniel Cook
@Ray Да, это другое дело. Я обращался к различным URL-адресам, которые будут созданы путем преобразования форм POST в GET daniel.gindi
Доу, только что понял, перенаправление наredirectPost.cfm» потеряет почтовые данные. Возможно другой тип перенаправления, 307? хранит почтовые данные, мне придется посмотреть это. Daniel Cook
0

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

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

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

Мы взглянули на вышесказанное, пытаясь понять, чтовозможно. Пример предложения Стандартный 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/ Информация недоступна в БД и потребует некоторых запросов к БД для определения заголовка и области. Daniel Cook

Похожие вопросы