我在位于/ projects / testsite
中的htaccess文件中使用以下代码AddType x-mapp-php5 .php
RewriteEngine On
RewriteBase /
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . projects/testsite/index.php [L,QSA]
#ErrorDocument 404 /404.php
当我在http://www.mydomain.com/projects/testsite/admin/articles/1/edit时 然后按保存,将请求重定向到http://www.mydomain.com/projects/testsite/admin/articles/1/save
所有帖子数据都会丢失。
如果我尝试调试,我得到的是
POST:Array print_r:Array() GET:Array print_r:Array()
我应该如何处理我的.htaccess文件,以便将所有请求重定向到index.php,但保留所有帖子数据?
提前谢谢!
P.S。如果我使用web.config重写规则在Windows服务器中设置它,我的网站将正常工作。
更新#1
从Firefox Live HTTP标题我看到一个重大问题:仅在Apache中捕获301 Moved Permanently标头(这在IIS中不会发生)
HTTP / 1.1 301永久移动 日期:太阳,2014年4月6日13:48:06 GMT 服务器:Apache 地点:http://mydomain.gr/projects/testsite/admin/articles/6/save 变化:接受编码 内容编码:gzip 内容长度:270 保持活跃:超时= 3,最大= 100 连接:Keep-Alive
更新#2
似乎与此问题存在某种关系:
How to preserve POST data via ajax request after a .htaccess redirect?
提问者发现有人在.htaccess文件的顶部为每个请求强制执行301重定向规则。
归咎于托管服务提供商吗?
答案 0 :(得分:1)
这令人感到莫名其妙,希望我从同样的头痛中拯救了某人:
问题出在Parallels Panel>网站&域和GT; mydomain.gr>托管设置
找到选择字段:
首选域名,它被设置为domain.tld,但我所有的请求都在www.domain.tld,所以301重定向(你丢失了所有帖子数据)是由并行而不是我的应用程序文件强制的。
请注意,Parallels中的标签警告:
无论访问者在浏览器中指定的域名(带有www前缀或没有域名),都会打开包含首选域名URL的页面。 HTTP 301代码用于这种重定向。 “无”值表示不执行重定向。
所以我的解决方案是将首选域更改为无。