Por que o meu www .htaccess. forçar causando formas externas a falhar sem www.?
Pergunta
Por causa de problemas AJAX de domínio cruzado estranhos, causando solicitações de AJAX a falhar quando não estiver usando www (o manipulador PHP se comunicar com o pedido é dado em um caminho relativo, por isso não pode ser um problema endereço ou alguma coisa - isso é o que esta pergunta é sobre embora), eu ter forçado www. usando .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]
Isso funciona muito bem. No entanto, eu quero permitir que outros webmasters para um cargo de meus formulários em seu site, usando o meu formulário de URL no atributo action da sua forma. Isso sempre funcionou, porém após minha mudança .htaccess as formas são apenas apresentado quando o webmaster adiciona www. para o valor da ação. Sem www. o formulário não vai ser submetido.
Como eu deveria mudar meu arquivo .htaccess para se certificar de que estas formas também são submetidos sem www.?
Solução
Você pode usar
RewriteCond %{REQUEST_METHOD} ^GET$
que irá reescrever só recebem pedidos, deixando solicitações POST como elas são.
Outras dicas
A maioria dos navegadores não para a frente POSTed dados quando 301 Redirected ... Então, você vai ver esses pedidos como um GET do seu url ação em seu lugar.
Este comportamento é tecnicamente não conforme mas parece ser a abordagem comumente aceita.
(cf http://www.lassosoft.com/Documentation/TotW /index.lasso?9083 , http: //www.nkuttler.de/2008/11/09/mailman-and-301-redirects/ .)
Talvez tente 307 temporários Redirects para as suas formas? 307 especificamente instrui o navegador para re-lançar os dados. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection