【问题标题】:Why is my .htaccess www. force causing external forms to fail without www.?为什么我的 .htaccess 是 www。强制导致外部表单在没有 www. 的情况下失败。
【发布时间】:2010-10-08 11:14:23
【问题描述】:

由于奇怪的跨域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. 的情况下也提交这些表单?

【问题讨论】:

    标签: .htaccess forms submit rewrite


    【解决方案1】:

    你可以使用

    RewriteCond %{REQUEST_METHOD} ^GET$
    

    这将只重写 GET 请求,而保留 POST 请求。

    【讨论】:

      【解决方案2】:

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

      This behaviour is technically non-compliant 但似乎是普遍接受的方法。

      (参考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

      【讨论】:

      • 告诉(搜索引擎)所有非 www 链接都移动到 www 链接是否是个好主意?我是否应该将其设为正常重定向而不是“永久移动”重定向?
      • 告诉搜索引擎您网站的“规范网址”是一个非常好的主意……除此之外,它还可以确保两个网址的各种链接结合起来更准确地反映网站的排名你的页面。简而言之,301==good,但是对于表单,要么使用 307,要么不要重定向你的 POST。
      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多