.htaccess拒绝所有但POST不使用Objective-C

Cri*_*era 5 php .htaccess post http objective-c

我一直在寻找拒绝所有HTTP方法但POST的方法.是的,我意识到这可能不会阻止很多,但我想让它工作.我遇到了一种拒绝所有但使用.htaccess文件发布的方法:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^POST
RewriteRule ^.*$ /home/user/public_html/folder/bad_request.php
Run Code Online (Sandbox Code Playgroud)

现在在我的iPhone应用程序中,我有以下代码,其中POST的数据到网站:

NSString *post_length = [NSString stringWithFormat:@"%d",[post_data length]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://folder.domain.com/"]];
[request setHTTPMethod:@"POST"];
[request setValue:post_length forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:post_data];
Run Code Online (Sandbox Code Playgroud)

当我用我当前的.htaccess运行这个代码,如上所示我得到bad_request页面,好像我没有发布数据,但如果我将.htaccess规则更改为!^ GET我可以在浏览器中访问它并获得访问但是当我发布随着iPhone代码,我被拒绝...所以这是倒退的.有谁知道它为什么不工作?

Cri*_*era 0

好吧,在尝试没有成功之后,我最终决定将您建议的 .htaccess 代码的一部分与一些 .php 合并。我让 .htaccess 文件获取请求方法并将其发送到 index.php,index.php 文件然后说如果它的 == 'POST' 执行其他操作,则执行其他操作并且它有效。

.htaccess

RewriteEngine On
RewriteRule ^(.*) index.php?request=%{REQUEST_METHOD} [L,QSA]
Run Code Online (Sandbox Code Playgroud)

索引.php

if ($_GET['request'] == 'POST') {

} else {

}
Run Code Online (Sandbox Code Playgroud)