我不是.htaccess专家,但是随着时间的推移,我已经从各种有用的帖子中建立了一个。
本节
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]
导致所有页面都通过index.php。这很好。但是,它强制我的至少一个ajax页面通过index.php,这是不可取的。有谁知道如何限制这个.htaccess代码只在初始站点访问期间生效而不是ajax加载?
感谢。
答案 0 :(得分:2)
为什么不将AJAX请求发送到常规文件(大小)?这样,%{REQUEST_FILENAME} !-s
条件将失败,并且不会使用重写规则。
否则,如果请求具有公共(但不是标准的)X-Requested-With
HTTP标头,则可以尝试跳过重写
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteCond %{HTTP:X-Requested-With} !=XMLHttpRequest
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]
我会在下面为你分解......
大多数JS库或浏览器(记不清楚)在发送AJAX请求时,会注入一个值为X-Requested-With
的HTTP标头XMLHttpRequest
。您可以在RewriteCond
%{HTTP:X-Requested-With} =XMLHttpRequest
中使用HTTP标头来检测AJAX请求。使用!=
表示请求不是通过AJAX。