希望在ajax页面包含时忽略.htaccess限制

时间:2013-08-07 04:11:38

标签: ajax .htaccess

我不是.htaccess专家,但是随着时间的推移,我已经从各种有用的帖子中建立了一个。

本节

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ index.php?path=$1 [QSA,L]

导致所有页面都通过index.php。这很好。但是,它强制我的至少一个ajax页面通过index.php,这是不可取的。有谁知道如何限制这个.htaccess代码只在初始站点访问期间生效而不是ajax加载?

感谢。

1 个答案:

答案 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。