1

由于奇怪的跨域 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 时提交。到动作值。没有万维网。该表格将不会被提交。

我应该如何更改我的 .htaccess 文件以确保在没有 www. 的情况下也提交这些表单?

4

2 回答 2

2

大多数浏览器在 301 Redirected 时不会转发 POST 数据...因此您会将这些请求视为您的操作 url 的 GET。

这种行为在技术上是不合规的,但似乎是普遍接受的方法。

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

也许为您的表单尝试 307 临时重定向?307具体指示浏览器重新POST数据。http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection

于 2009-02-18T22:56:58.327 回答
2

你可以使用

RewriteCond %{REQUEST_METHOD} ^GET$

这将只重写 GET 请求,而使 POST 请求保持原样。

于 2009-02-19T00:15:45.860 回答