Почему мой .htaccess www. сила, вызывающая сбой внешних форм без www. - PullRequest
1 голос
/ 19 февраля 2009

Из-за странных междоменных проблем AJAX, вызывающих сбой запросов AJAX, когда не используется www. (Обработчик PHP, взаимодействующий с запросом, указан по относительному пути, поэтому это не может быть проблема с адресом или что-то еще - вот что этот вопрос о том, хотя), я заставил www. используя .htaccess:

#enable rewrite engine and set options
Options +FollowSymLinks
RewriteEngine on

#only www.
RewriteCond %{HTTP_HOST} !^www.domain.com$
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301]

Это прекрасно работает. Однако я хочу разрешить другим веб-мастерам размещать одну из моих форм на своем веб-сайте, используя URL-адрес моей формы в атрибуте действия их формы. Это всегда работало, однако после моего изменения .htaccess формы отправляются только тогда, когда веб-мастер добавляет www. к значению действия. Без www. форма не будет отправлена.

Как мне изменить мой файл .htaccess, чтобы эти формы также отправлялись без www.?

Ответы [ 2 ]

2 голосов
/ 19 февраля 2009

Вы можете использовать

RewriteCond %{REQUEST_METHOD} ^GET$

, который будет переписывать только GET-запросы, оставляя POST-запросы такими, какие они есть.

2 голосов
/ 19 февраля 2009

Большинство браузеров не пересылают POST-данные при перенаправлении 301 ... Таким образом, вы увидите эти запросы как GET вашего URL-адреса действия.

Такое поведение технически не соответствует , но, похоже, является общепринятым подходом.

(ср. http://www.lassosoft.com/Documentation/TotW/index.lasso?9083, http://www.nkuttler.de/2008/11/09/mailman-and-301-redirects/.)

Может, попробовать 307 временных перенаправлений для ваших форм? 307 специально инструктирует браузер повторно отправлять данные. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

...