我有一个htaccess规则,将所有请求重定向到index.php,但这是干扰需要直接访问所请求文件的AJAX请求。
我正在尝试通过将?ajax = true 附加到所有AJAX请求网址来解决此问题,并创建一条规则,说明“所有以?ajax = true结尾的网址应直接处理“
这是我目前的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !^ajax=true$
RewriteRule ^(.*)$ index.php?params=$1 [NC]
我的AJAX请求网址如下:
http://www.domain.com/process_ajax.php?ajax=true
到目前为止没有运气:(
答案 0 :(得分:2)
我认为你接近使用否定RewriteCond
,但语法可能有点偏。尝试使用括号,如下面的示例所示。
首先,我会为GET
参数使用通配符值,例如.*
,这样您就可以专注于定位正确的键。一旦它正常工作,您可以再次测试以获得正确的值,大概是true
。
尝试:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} !(ajax=.*)$
RewriteRule ^(.*)$ index.php?params=$1 [NC]