Ajax 重写规则在jquery.get()上不起作用?

Ajax 重写规则在jquery.get()上不起作用?,ajax,.htaccess,xss,Ajax,.htaccess,Xss,首先,我对我的问题标题感到抱歉,但实际上我脑子里没有更好的想法 我有一个.htaccess文件,可以进行“常规”重写: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 这使我可以使用此url,例如(我正在

首先,我对我的问题标题感到抱歉,但实际上我脑子里没有更好的想法

我有一个.htaccess文件,可以进行“常规”重写:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
这使我可以使用此url,例如(我正在与xampp合作)

localhost/<project>/en/products/electronic/television/
localhost//en/products/electronic/television/
因此,这个url位于$_GET['url']变量中,我可以使用它(作为数组)在HMVC模式中加载控制器

而且,为了不必输入语言(在上面的示例中为“en”),我实现了一个自动插入“en”的函数。基本上,这意味着下面的url提供相同的控制器,并且分别提供相同的输出

localhost/<project>/products/electronic/television/
localhost//产品/电子/电视/
但是现在我想知道,我的javascript文件(jquery&co)位于文件夹中

<project>/lib/js/query/jquery.min.js
/lib/js/query/jquery.min.js
可以简单地要求如下:

<script type="text/javascript" src="/<project>/lib/js/jquery/jquery.js"></script>

我希望请求的路径最终会是这样的(因为我在$\u GET['url']变量中添加了语言,它将尝试加载一个控制器,但失败了

src="/<project>/en/lib/js/jquery/jquery.js"
src=“//en/lib/js/jquery/jquery.js”
好吧,如果是这样的话,我很高兴它能以这种方式工作,但它让我想到了尝试这种方法的想法:

$(document).ready(function() {
    alert("this is a test");
    $.get("/<project>/<config-dir>/<config-file>", function(data) {
        alert(data);
    });
});
$(文档).ready(函数(){
警惕(“这是一项测试”);
$.get(“///”,函数(数据){
警报(数据);
});
});
瞧,它输出了配置文件。 我认为在高效服务器上的行为是相同的,但是在路径中没有“/”节点。 在不从文档根目录移动配置文件的情况下,如何防止出现这种情况

基本上,我已经确保XSS攻击不会(几乎)失败。之所以“几乎”是因为没有100%的安全性

我希望我表达得很好:)
谢谢你的帮助/建议。

我发现了问题所在,为什么我可以访问配置文件:重写条件。他们简单地说,如果请求的文件名不是目录、文件或链接(?),则以下规则应生效

因此,这基本上解释了为什么重写规则在ajax请求上不起作用(在普通请求上也不起作用)

现在我不允许访问的问题解决了

为了从重写规则中排除某些特定目录,我添加了以下规则:

RewriteRule ^(<dirname>)($|/) - [L]
RewriteRule^()($|/)-[L]
RewriteRule ^(<dirname>)($|/) - [L]