【问题标题】:form post to mod_rewrite url将帖子发送到 mod_rewrite url
【发布时间】:2010-11-02 15:41:25
【问题描述】:

我正在尝试向 URL“localhost/login”提交表单。在我的登录目录中,我有一个 index.php 文件,其中包含我用来调试帖子是否正常工作的代码:

<?php
echo $_POST['username'];
?>

我的登录目录中有一个 .htaccess 文件:

RewriteEngine on
RewriteRule ^. index.php [L]

问题是,当我发布到 localhost/login 时,我的萤火虫显示初始 POST 已通过,但随后作为 GET 请求重定向到 login.php,没有任何 POST 变量...

发布 http://localhost/login?password=test_password&remember=true&username=test_username 301 永久移动

获取 http://localhost/login/ 200 确定

任何提示都会很棒。

谢谢

【问题讨论】:

  • login.php 部分来自哪里?你是说 index.php 吗?
  • 对不起,它应该是:“但随后重定向到 login/index.php 作为 GET 请求,没有任何 POST 变量...”

标签: mod-rewrite forms post


【解决方案1】:

我的 .htaccess 文件中有一个条件:

RewriteBase /
RewriteCond %{HTTP_HOST} !^www(.*)
RewriteRule ^(.*) http://www.%{HTTP_HOST}%{REQUEST_URI}

重写任何没有前缀“www”的链接。像这样:

http://mysite.com to http://**www**.mysite.com

这就是我遇到的问题:

在我的表单中,我忘记输入“www”,所以我的 POST 数组是空的。

把 www 放在这样的形式中:

action="http://www.mysite.com/login"

代替:

action="http://mysite.com/login"

帮我解决了这个问题。

【讨论】:

    【解决方案2】:

    根据我的研究,应该允许 POST 被重写并以 POST 形式出现,任何类型的问题都可能是由于其他问题造成的,例如您的代码。

    顺便说一句,一般来说,为了防止 GET 参数被剥离,请使用 QSA 指令:

    [QSA,L]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 2016-09-29
      • 2012-02-04
      • 2020-12-23
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      相关资源
      最近更新 更多