php - 使用 RewriteRule 发送 POST 数据

标签 php apache .htaccess mod-rewrite

在我的应用程序中,我想发送index.php中的所有请求,我在其中选择要使用的 Controller 和方法并调用该方法并给出通过get或post接收的参数。 因此,在根目录中,我放置了一个包含以下代码的 .htaccess 文件:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule    ^$    public/    [QSA,L,NC,PT]
RewriteRule    (.*) public/$1    [QSA,L,NC,PT]

我将所有请求发送到我有这个 .htaccess 文件的公共(public)文件夹:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [QSA,PT,L,NC]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>

它可以工作并将所有请求发送到index.php,但问题是,如果我尝试通过POST发送数据,它不会到达index.php,如果我通过get发送它,它可以工作,但可以说我有一个登录页面,我无法通过 get 发送所有数据,因为我不希望在 url 中看到密码。

那么有没有办法使用.htaccess文件将POST数据发送到index.php?

我知道网站上还有其他类似的问题,但我尝试了其中的每一个,但没有成功,其中许多人回答说在 .htaccess 文件的 [] 中添加 P,但如果我这样做,我会得到我提出了一个错误的请求。

最佳答案

通常我对应用程序使用此重写,目前它运行得很好:

RewriteEngine On
# Send the URI to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L] 

基本上,上面的代码将所有不是文件或目录的内容直接传递给index.php,并且那里的代码必须解析它并做出相应的响应。

使用自定义框架的事件(正如您所提到的,您想使用自己的[我不建议您这样做])。

您可以使用静态路由并在应用程序级别解析它们,因此假设您的站点位于 exmaple.com 上,URL 将类似于 example.com/controller/action/。但您需要某种路由来确定模式。

作为引用,您可以查看 Slim Framework ,它有一个非常好的定义路由的方法,与模块/ Controller /操作等的命名模式无关。

关于php - 使用 RewriteRule 发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037355/

相关文章:

javascript - PHP Mailer,在发送电子邮件时阻止整个服务器执行

php - HWID 锁定 PHP 页面?

java - 创建 QName 时本地部分不能为 “null”

java - 静态变量在 Apache tomcat servlet 实例化中没有得到更新

.htaccess - HTACCESS RewriteRule 更改 URL 正常但给出 404 页面

wordpress - Cloudflare 525 在 Wordpress 上使用 HTTPS

php - 如何捕获并记录使用 PHP 发生的任何 301 重定向 (.htaccess)

php - odbc_exec 与 odbc_excute

java - 如何检索文件服务器中存储的图像?

php - 使星号之间的文本加粗