【问题标题】:Form not posting data to controller表格未向控制器发布数据
【发布时间】:2013-03-28 08:05:37
【问题描述】:

我遇到了一个奇怪的问题,即每当我提交表单时,它都会弹出一个错误,例如“所有字段都是必需的”。当我调试它时,我发现每当提交表单时,我的控制器中都没有得到任何发布数据,它是一个空数组。

在我的本地主机上一切正常。我已经搜索过它并得出结论,这是我的.htacess 文件的问题。我已经设置了添加斜杠的规则,发现这会产生问题。

所以我想知道,我怎样才能为我的组件中执行的特定任务删除此规则。任何的意见都将会有帮助。这是添加斜杠的代码:

RewriteEngine On

# Start –301 redirect for "http://" to "http://www"
rewritecond %{http_host} ^testdomain.com [nc]
rewriterule ^(.*)$ http://www.testsdomain.com/$1 [r=301,L]
# End - 301 redirect rule

# add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]

【问题讨论】:

    标签: php .htaccess mod-rewrite joomla joomla2.5


    【解决方案1】:

    检查您的表单张贴到哪里。如果表单action 是不带斜线的url,那么一旦你向它发出POST 请求,htaccess 将重定向你,你将向你应该发布数据的页面发出GET 请求。但是由于您的请求已经被重定向并更改为GET,因此不会有任何数据提交。

    解决方案:要么修正表单动作,要么放弃添加斜杠的代码。说到斜杠,据我所知,Joomla 会生成没有它的 SEF 链接,所以我想知道你为什么首先添加它,每次点击某些东西时都会进行重定向

    【讨论】:

      【解决方案2】:

      我已经解决了我的问题,通过以下更改规则并开始工作并在 url 中添加 尾部斜杠。我希望它会在未来对其他人有所帮助。

      RewriteEngine On
      
      # Start –301 redirect for "http://" to "http://www"
      rewritecond %{http_host} ^testdomain.com [nc]
      rewriterule ^(.*)$ http://www.testsdomain.com/$1 [r=301,L]
      # End - 301 redirect rule
      
      # add trailing slash
      RewriteBase /
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_URI} !index.php
      RewriteCond %{REQUEST_URI} !(.*)/$
      RewriteRule ^(.*)$ http://www.testdomain.com/$1/ [L,R=301]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多