2009-02-18 4 views
1

En raison de problèmes AJAX interdomaines étranges, les requêtes AJAX échouent lorsque vous n'utilisez pas www. (Le gestionnaire PHP communiquant avec la requête est donné dans un chemin relatif, donc il ne peut pas être un problème d'adresse ou autre - c'est ce que question est à propos de si), j'ai forcé www. en utilisant .htaccess:Pourquoi mon .htaccess www. force forçant les formes externes à échouer sans www.

#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] 

Cela fonctionne très bien. Toutefois, je souhaite autoriser d'autres webmasters à publier un de mes formulaires sur leur site Web, en utilisant l'URL de mon formulaire dans l'attribut d'action de leur formulaire. Cela a toujours fonctionné, mais après mon changement de .htaccess les formulaires ne sont soumis que lorsque le webmaster ajoute www. à la valeur de l'action. Sans www. le formulaire ne sera pas soumis.

Comment devrais-je modifier mon fichier .htaccess pour m'assurer que ces formulaires sont également soumis sans www.

Répondre

2

Vous pouvez utiliser

RewriteCond %{REQUEST_METHOD} ^GET$ 

qui réécrire uniquement les requêtes GET, laissant les requêtes POST comme ils sont.

2

La plupart des navigateurs ne transfèrent pas de données POSTed lorsque 301 sont redirigés ... Vous verrez donc ces requêtes comme un objet GET de votre URL d'action à la place.

This behaviour is technically non-compliant mais semble être l'approche communément acceptée.

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

Peut-être essayer 307 Redirects temporaires pour vos formulaires? 307 indique spécifiquement au navigateur de re-valider les données. http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

+0

est-ce même une bonne idée de dire (moteurs de recherche) que tous les liens non-www sont déplacés vers des liens www? devrais-je en faire une redirection normale plutôt qu'une redirection "permutée"? – Tom

+0

C'est une très bonne idée de dire aux moteurs de recherche à propos de "l'URL canonique" pour votre site ... Entre autres choses, il s'assure que les différents liens aux deux URLs reflètent mieux le classement de votre page. En bref, 301 == bon, mais pour les formulaires, utilisez soit 307, ou ne pas rediriger vos POST. – Stobor

Questions connexes