htaccess文件充当参数

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^\/]+)/([^\/]+)/([^\/]+)(\/|)$  index.php?tab1=$1&tab2=$2&tab3=$3 [QSA]
RewriteRule ^([^\/]+)/([^\/]+)(\/|)$  index.php?tab1=$1&tab2=$2 [QSA]
RewriteRule ^([^\/]+)(\/|)$  index.php?tab1=$1 [QSA]

When I go to 'ajax.php' it acts as 'index.php?tab1=ajax.php&t=post&a=new'. Why? And how do I fix this? I want ajax.php to be a separate file.

Have it this way:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$  index.php?tab1=$1&tab2=$2&tab3=$3 [QSA,L]
RewriteRule ^([^/]+)/([^/]+)/?$  index.php?tab1=$1&tab2=$2 [QSA,L]
RewriteRule ^([^/]+)/?$  index.php?tab1=$1 [QSA,L]

And remember that RewriteCond is only applied to most adjacent RewriteRule.