如何防止mod_rewrite处理HTTP Post请求?

时间:2011-12-17 01:27:46

标签: php forms .htaccess mod-rewrite

我的.htaccess看起来像这样 -

<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteBase /
RewriteRule ^auth\.php$ - [L]
RewriteRule ^static - [L]
RewriteRule (.*) router.php [L]
</IfModule>

它基本上确保所有请求都路由到router.php(auth.php和静态文件夹除外)

现在的问题是,每当我发布表单时,mod_rewrite都会强制将HTTP POSTS路由到router.php。

如何确保HTTP POST不会路由到router.php?

2 个答案:

答案 0 :(得分:6)

您可以根据apache服务器提供的各种内容(如请求方法或主机)制定重写条件。该指令称为RewriteCond。只有匹配一个或多个条件的请求才会被重写。

 RewriteCond %{REQUEST_METHOD} !POST
 RewriteRule .* router.php [L]

%{REQUEST_METHOD}是包含请求方法的服务器变量。 List of methods

答案 1 :(得分:1)

使用RewriteCond

RewriteCond %{REQUEST_METHOD} !POST
RewriteRule (.*) router.php [L]

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritecond