Forums / Developer / RewriteRule help
Trond Åge Kvalø
Thursday 10 June 2004 7:10:53 am
I tried to use the following rewrite rule on my site:
#RewriteRule !(^/design|^/var/.*/storage|^/var/storage|^/var/.*/cache|^/var/cache|^/extension/.*/design|^/kernel/setup/packages).*\.(gif|css|jpg|png|jar|js|ico|pdf|swf)$ /index.php
In my site I use an <iframe> for showing a JavaScript based navigation-system (I know, I know....).
When using the above Rewrite rule, I get the site frontpage in the iframe instead of the navigation menu.
I'm no expert on Rewrite rules in Apache, so can anyone please tell me why this happens?
best regardstrondåge
trondåge
Bruce Morrison
Thursday 10 June 2004 4:31:46 pm
Whats the URL used in the iframe?
CheersBruce http://www.designit.com.au
My Blog: http://www.stuffandcontent.com/ Follow me on twitter: http://twitter.com/brucemorrison Consolidated eZ Publish Feed : http://friendfeed.com/rooms/ez-publish
Friday 11 June 2004 1:29:33 am
Hi Bruce.
Here's the beginning of my iframe:
<iframe id="navigationContainer" name="navigationContainer" src="/snakeMenu/snakeMenu.html"
hmmmm.... perhaps I need to add the /snakeMenu directory to my rewrite rule?
I also have some other nonstandard directories in my Exponential directory. I have for instance all my javascripts placed in a directory called javascript. Do I need to include those non-standard directories as well?
Friday 11 June 2004 5:11:59 am
Ok, after reading a little in mastering Regular Expressions by Jeffrey Friedl (O'Reilly), here's what I've come up with:
If I've understood this correctly "|" means OR inside parenthesis, so the rewrite rule basically states that whenever the beginning of the URL is one of the expressions OR'ed in the first parenthesis, followed by any charachters and then a dot, and the end of URL is one of the expressions in the last parenthesis, the browser is redirected to /index.php
If this is correct, I'm even more puzzled. Because the URL in the iframe shouldn't be redirected then since it's path is not in the first parenthesis.. or am I misunderstanding completely?
Tobias Persson
Friday 11 June 2004 5:58:14 am
I think the first '!' mean not
So everything that is do not follow the regular expression gets rewritten to index.php
Friday 11 June 2004 6:06:29 am
Hi Tobias
Why of course, didn't see that because of the line wrapping :-)
So that means that the /snakeMenu directory should be included in the ignored paths, right?
Thanks :-)
Friday 11 June 2004 6:23:58 am
I think (guess) that you should add ^/snakeMenu in the first parenthes and html to the last one.
Friday 11 June 2004 3:45:27 pm
I find it easiest to add a rewrite rule before that ezpub one.
So you would end up with something like:
RewriteRule /snakeMenu/snakeMenu.html %{DOCUMENT_ROOT}/snakeMenu/snakeMenu.html [L] RewriteRule !(^/design|^/var/.*/storage|^/var/storage|^/var/.*/cache|^/var/cache|^/extension/.*/design|^/kernel/setup/packages).*\.(gif|css|jpg|png|jar|js|ico|pdf|swf)$ /index.php
The [L] at the end of the first rule says "Don't process any more rules".
CheersBruce http://www.designit.com.au/
Tuesday 15 June 2004 5:51:13 am
Thanks for the suggestion Bruce.
But why wouldn't I want to process the last rule? Is it unnecessesary?
Tuesday 15 June 2004 4:37:33 pm
The first rule allows requests for the /snakeMenu/snakeMenu.html file to be returned without being passed to Exponential (index.php). It's basically a pass through rule.
This method allows you to add "pass through" rules without making changes to the standard Exponential rule.
I should have added that [L] at the end of the first rules says "if this rule matches, don't process any more rules"
Thursday 17 June 2004 1:37:07 am
Cheers Bruce!
OK, now I understand. Made a bit of difference the first few words there :-)
Anyway, as I mentioned earlier I have a few other non-standard directories as well. I presume I could just OR these directories together with the snakeMenu directory in the first line to get things right.
Does that sound correct to you?
Best regardstrondåge