这是一个问题,我以前发布的一个新的认识:试图让在一个共同的PHP/JavaScript库的mod_rewrite
我有一个mod_rewrite的片段,发现无论是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]
这工作,如果:
- 你明确地堵塞请求的文件名到地址栏。
- 它也适用于js或css在html标记中被引用/链接的情况。
如果
- URL是使用PHP或JS文件中(例如,用于调用Ajax)它不工作。相反,它引用在HTML页面中找到的子域(即mod_rewrite的不抓住它):
subdomain.example.com
太感谢您的帮助
编辑
每佩卡的再审,在这里是一个例子:
- 就拿subdomain.example.com/test.html
- 的test.html引用
<script src="/code/js/test.class.js" type="text/javascript" ></script>
- 在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
(正确的!) - 但在#3中,ajax调用
subdomain.example.com/code/php/test.php
(错误!由于subdomain
)
网址是网址,不管它们在哪里被引用。他们应该始终以相同的方式工作。当子域被引用时,URL应该自动被重写。你能举个例子吗? – 2010-11-09 09:12:17
嗨@Pekka!我写了一个例子。希望它会有所帮助? – Kyle 2010-11-09 09:47:50
@埃米尔是的,我已经看到了。所以你在说,当你在浏览器中引用'subdomain.example.com/code/js/test.class.js'时,应用mod_rewrite规则,但是当你在HTML页面中引用JavaScript时,则不会应用mod_rewrite规则? – 2010-11-09 09:47:56