.htaccess 如何指示Apache根据请求URL中的查询变量应用不同的URL重写规则?

.htaccess 如何指示Apache根据请求URL中的查询变量应用不同的URL重写规则?,.htaccess,.htaccess,我在.htaccess文件中有一组规则,可以将所有请求重定向到index.php,但这会干扰需要直接访问请求文件的AJAX请求 我试图通过将?ajax=true附加到所有ajax请求url,并创建一个规则来解决这个问题,该规则说“所有以?ajax=true结尾的url都应该直接处理” 这是我当前的.htaccess文件: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAM

我在
.htaccess
文件中有一组规则,可以将所有请求重定向到
index.php
,但这会干扰需要直接访问请求文件的AJAX请求

我试图通过将
?ajax=true
附加到所有ajax请求url,并创建一个规则来解决这个问题,该规则说“所有以
?ajax=true
结尾的url都应该直接处理”

这是我当前的
.htaccess
文件:

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

RewriteCond %{QUERY_STRING} !^ajax=true$
RewriteRule ^(.*)$ index.php?params=$1 [NC]
我的AJAX请求URL如下所示:

http://www.example.com/process_ajax.php?ajax=true

到目前为止运气不好。

我认为您已接近使用否定的
重写条件,但语法可能有点不正确。尝试使用括号,如下面的示例中所示

首先,我会为
GET
参数使用一个通配符值,比如
*
,这样您就可以专注于确定正确的键。一旦它起作用,您可以再次测试以获得正确的值,大概是
true

尝试:

RewriteEngine On      
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(ajax=.*)$ 
RewriteRule ^(.*)$ index.php?params=$1 [NC]