当前位置:  开发笔记 > 编程语言 > 正文

是否可以重定向发布数据?

如何解决《是否可以重定向发布数据?》经验,为你挑选了2个好方法。

我有一个网站,所有请求都以静默方式重定向(通过.htaccess)index.php,然后PHP用于显示正确的页面(通过解析REQUEST_URI).

我想知道是否可以将POST数据提交到假地址?

我现在有这样的表格......

我的.htaccess统治是......

# redirect mail posting to index
RewriteRule send-mail index.php?send-mail [NC,L] 

我的index.php支票isset($_GET['send-mail'])工作正常.

但是,这似乎会丢弃应发送给它的所有POST数据.

有没有办法保留帖子数据?我不想使用GET,因为它不能发送尽可能多的信息,尽管它可能不是一个简单的查询表格的问题.

这是我.htaccess重定向到的index.php

# serve files and dirs if they exist please, otherwise send to index
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php

Tautologisti.. 62

试试这个:

# redirect mail posting to index
     RewriteRule send-mail index.php?send-mail [NC,P]

"P"的作用类似于"L",因为它停止处理规则,但它也告诉模块该请求应该完整地传递给代理模块(意味着POST数据被保留).



1> Tautologisti..:

试试这个:

# redirect mail posting to index
     RewriteRule send-mail index.php?send-mail [NC,P]

"P"的作用类似于"L",因为它停止处理规则,但它也告诉模块该请求应该完整地传递给代理模块(意味着POST数据被保留).


请注意,您需要启用代理模块,并在配置文件中使用proxy_http_module才能生效.此外,您可能需要设置重写规则的绝对路径.也就是说,在上面的例子中,你将使用`RewriteRule send-mail /path/to/index/index.php?send-mail [NC,P]`(或至少在索引之前的`/`)

2> Bill Karwin..:

您应该能够简单地重定向到index.php,然后在该脚本中,访问$_SERVER['REQUEST_URI']以查看原始请求,并且"send-mail"保持不变.

顺便说一句,"不能发送尽可能多的信息"不是使用POST的原因.使用POST的原因是请求将修改您网站上的数据,而不是简单地检索数据.

假设您在页面上添加了一个带有" /delete_user?id=1234,"等GET请求的超链接,然后一些搜索引擎无意中跟随链接,因为它正在索引您的网站.这就是为什么GET请求不适合修改数据的请求.


这是一个小的限制,一旦你达到一些任意限制(我认为它的1024个字符),它后面的数据将被从请求中删除.如果碰巧是用户输入字段,则特别有问题.
(注意:限制是服务器*和*浏览器特定,RFC说它无限制,但我们知道一些公司读取的频率)
+1因为我问了这个问题后我有点开明,现在完全理解所有数据修改应该是POST
推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有