代码之家  ›  专栏  ›  技术社区  ›  Kyle Cureau

尝试使用mod廑rewrite获取公共php/javascript库

  •  2
  • Kyle Cureau  · 技术社区  · 14 年前

    这是对我之前发布的一个问题的新理解:

    我有一个MODY重写片段,它发现JavaScript、CSS、PHP文件是否存在于它们调用的子域上(例如, subdomain.example.com ). 如果它们不存在,那么Apache“重定向”到 common.example.com 常见的js、css和php文件。见下文:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)\.(js|css|php)$ http://common.example.com/$1.%2 [L]
    

    如果:

    • 您可以显式地将请求的文件名插入地址栏。
    • 如果在html标记中引用/链接js或css,它也可以工作。

    如果

    • 子域.example.com

    谢谢你的帮助

    根据Pekka的要求,下面是一个例子:

    1. 子域名.example.com/test.html
    2. 测试.html 参考文献 <script src="/code/js/test.class.js" type="text/javascript" ></script>
    3. test.class.js类 $.ajax({ url: "/code/php/test.php", dataType : "json", data: {cmd : 'someCommand'}, success: callback()});

    • 所以在#2中,它发现 common.example.com/code/js/test.class.js (正确!)
    • subdomain.example.com/code/php/test.php subdomain )
    1 回复  |  直到 14 年前
        1
  •  0
  •   Community CDub    8 年前

    这是 更改域

    通过在重写规则中指定完整的URL而不是文件系统路径,可以强制服务器发送 301

    AJAX请求通常 follow header redirects , 您正在重定向到另一个域,因此违反了 Same Origin Policy !

    这意味着对于Ajax请求,不能使用这种重定向方法。您必须在RewriteRule中指定一个文件系统路径,以便可以在内部进行重写(这样对于浏览器来说,它将保持 subdomain.example.com/code/php/test.php