apache http 服务器:重写规则:如何进行 basedir 更改?

apache http 服务器:重写规则:如何进行 basedir 更改?

这一页:

http://test/subdira/subdirb/

有相对链接,例如:

<script type="text/javascript" src="res/ext-base.js"></script>

问题是目录res/不在其中,/subdira/subdirb/而是在另一个目录中(/js/ext-3.3.1/cm)。所以我想知道如何更改 basedir(或者可能是另一种解决方案)。所以如果我尝试这个规则:

RewriteRule ^/$ /js/ext-3.3.1/cm/index.html [QSA,L]

我现在可以像这样调用不带“subdira/subdirb/”的“基本”url:

http://test/

但是...如果我这样做,这个相对链接:

<script type="text/javascript" src="res/ext-base.js"></script>

不再起作用,因为它尝试访问 /res/ext-base.js,而不是好的那个。

知道我该怎么办吗?

答案1

好的,我在这里找到了:

(“在多个目录中搜索页面”部分)

http://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html

我采取了相反的做法:测试文件是否在子目录中,如果是,则停止并继续:

RewriteCond         %{DOCUMENT_ROOT}/js/ext-3.3.1/cm/%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /js/ext-3.3.1/cm/$1 [QSA,L]
RewriteCond         %{DOCUMENT_ROOT}/js/ext-3.3.1/cm%{REQUEST_FILENAME}  -f
RewriteRule  ^(.+)  /js/ext-3.3.1/cm$1 [QSA,L]

它有效 \o/

相关内容