Simple mod_rewrite question
am 13.04.2008 18:33:38 von k3pp0Hello.
I'm trying to make use of "pretty URLs" with Apache's rewrite module.
Here's what I want:
http://foo.bar/index.php?download
should be replaced with
http://foo.bar/download
My .htaccess looks like that:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php
In the index.php I look at $_SERVER['REQUEST_URI'] and act
accordingly:
$requestedURI = empty($_SERVER['REQUEST_URI']) ? false :
$_SERVER['REQUEST_URI'];
switch($requestedURI) {
case "/download":
include "download.php";
break;
default:
// do something
break;
}
This works if I go to http://foo.bar/download - it shows index.php
with the included download.php file. But if I go to http://foo.bar/download/
(with a slash at the end of the URL) it doesn't do anything (default
case of switch($requestedURI)), because "/download" != "/download/".
To solve this I could just make two cases: case "/download" and case "/
download/", but I don't really like this solution, if there's a better
one, please tell me.
Let's take it I use the method with the two cases ("/download" and "/
download/"), there's another problem:
In the index.php I've included a stylesheet: "
type="text/css" href="main.css" />". As you can see, I use a relative
link to the css file. So if I call http://foo.bar/download, it loads
the css file from http://foo.bar/main.css, but if I enter http://foo.bar/download/
(with the slash) it can't find the css file, because it tries to
locate it at http://foo.bar/download/main.css, but of course, there is
no main.css, /download/ is not even a directory... How do I fix this?
Thanks in advance for any help!