如果不是AJAX调用的某个文件,则重写

时间:2013-09-24 07:20:59

标签: javascript jquery ajax .htaccess

我正在使用名为Grapnel.js的路由库。它需要index.php#something/something形式的网址,所以我使用htaccess重写/something/something。但是我希望能够有2-3 something个,所以我使用QSA标志将其添加为查询参数。

问题是htaccess显然正在应用于ajax调用,并导致无限循环。我尝试过使用

RewriteCond %{REQUEST_URI} !^/file.php
RewriteRule ^(.+)$ /#$1 [NE,R,QSA,L]

RewriteRule ^[^file](.+)$ /#$1 [NE,R,QSA,L]

Javascript是:

router.get('*', function(req){
    var first = req.params[0];
    var parts = first.split("/");
    var len = parts.length;

    $.ajax({
        url: 'file.php', 
        data: {
            parts: parts,
            len: len
        }
    }).done(function(data) {
        $('#output').html(data);
    });
});

1 个答案:

答案 0 :(得分:1)

你可以尝试这段代码:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ /#$1 [NE,R,L]