Oct 4, 2011
tom

apache http server: rewrite rule: how to make a basedir change?

Question

This page:

http://test/subdira/subdirb/

has relative links, like this:

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

The problem is that the directory res/ is not in /subdira/subdirb/ but in another directory (/js/ext-3.3.1/cm). So I’m wondering how to change the basedir (or maybe another solution).
So if I try this rule:

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

I may now be able to call the “base” url without ‘subdira/subdirb/
‘ like this:

http://test/

but… if I do this, this relative link:

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

doesn’t work anymore because it tries to access the /res/ext-base.js, not the good one.

Any idea how I could do?

Answer

Ok I found it here:

(Section “Search pages in more than one directory”)

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

I’ve taken the opposite side: test if the file is in the subdirectory, if so, stop and go ahead:

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]

it works o/

Related posts:

  1. Apache : Rewrite rule to change a file path
  2. Apache rewrite rule (that already works) optimization : any good advice?
  3. Is this an unsafe Apache Rewrite Rule?
  4. Apache Rewrite: How to write a rule based on domain name (instead of HTTP_HOST)?
  5. How do I make a mod_rewrite rule that uses the sub-domain name to rewrite the URL?

Leave a comment