假设我有3个不同应用程序的以下结构,这些应用程序存在于3个不同的域中,还有个人“cdn”,我可以在这里放置所有三个应用程序中常见的文件:
root/
/dinosaureggs.com
/magicalapples.com
/wizardsupplies.com
/mypersonalcdn.com
/js
/php
/css
在本地和生产环境中镜像了相同的结构。
如果我在dinosaureggs.com,我想在/ php文件夹中使用共享的PHP库,我可以说:
require('/../mypersonalcdn.com/php/library.php')
这适用于本地服务器和生产服务器。
然而,它不适用于JS,因为JS包含不能以与PHP相同的方式退出“app”。
我不能说:
<script type="text/javascript" src="/../mypersonal.cdn/js/library.js"></script>
现在,我可以说:
<script type="text/javascript" src="http://mypersonalcdn.com/js/menus.js"></script>
但这并不能解决我对本地环境的问题(至少在某种程度上我希望将其真正留在本地并且可以选择离线开发)。
有什么建议吗?
答案 0 :(得分:0)
每个应用程序都必须提供它自己的JS库副本,或者将它们放在你的CDN中。
你不能从你的webroot上去,因为那里没有任何东西,所以要确保它在你的webroot中可用,要么因为它在那里,要么通过重写将请求转发到将找到JS文件的PHP脚本,归还它的内容。
答案 1 :(得分:0)
对于本地开发,为什么不能只使用stml参数的html文件方案。
例如,(我正在编写根文件夹所在的目录,请更改它)
<script type="text/javascript" src="file://Users/bob/projects/root/mypersonalcdn.com/js/menus.js"></script>
答案 2 :(得分:0)
您可以像这样修改您的php文件:
<?php if ($_SERVER['SERVER_NAME'] == "localhost") { ?>
<script type="text/javascript" src="path/to/your/library.js"></script>
<?php } else { ?>
<script type="text/javascript" src="http://mypersonalcdn.com/js/menus.js"></script>
<?php } ?>
这是处理此类问题的常用方法。
答案 3 :(得分:0)
虽然上面提到JS方法的PHP是可以的,但这是一个更直接的解决方案,我最终登陆了:
提供doc root之外的文件/跨多个域的公共客户端文件
要执行此操作,请在http.conf
中设置 mod_alias在如下所示的本地环境中:
Alias /shared/ "/Users/Jane Doe/Sites/shared"
<Directory "/Users/Jane Doe/Sites/shared">
Options Indexes MultiViews
Order allow,deny
Allow from all
</Directory>
这使得你可以像这样调用css(或图像或js或其他):
但是,不是在该域上查找/ shared /,而是在服务器上的“共享”指向的地方;在这种情况下:/ Users / Jane Doe / Sites / shared /
资源: