Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

078274121, info0a ip, should prodicers of software_based services be held liable or not liable for economic injuries, should producers of soft ware based services such as ATMs be held liable for economic injuries suffered when their systems fail?, nisc wwwxxx, wwwxxx0cm, should producers of software-based services, such as atms, be held liable for economic injuries suffered when their systems fail?, wwwxxx0cm, www.webdp.net, Event 9 IIS log failed to write entry

Links

XODOX
Impressum

#1: Simple mod_rewrite question

Posted on 2008-04-13 18:33:38 by k3pp0

Hello.


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: "<link rel="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!

Report this message

#2: Re: Simple mod_rewrite question

Posted on 2008-04-16 10:37:53 by k3pp0

Anyone?

Report this message

#3: Re: Simple mod_rewrite question

Posted on 2008-04-20 13:30:29 by k3pp0

So I'm trying to only use the RewriteEngine to handle my url.

I came across this problem:

Let's assume I have a url like that:
http://foo.bar/index.php?site=users&mode=manage&action=addne w

For example, this url would open a site that let's you add a new
user.
The "pretty" url should look like http://foo.bar/users/manage/addnew
This works fine:
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?site=$1&mode=
$2&action=$3 [L]

But http://foo.bar/index.php?site=users&mode=manage (note that
there's
no action parameter) should also be accessible through the pretty url
(/users/manage) and so should http://foo.bar/index.php?site=users
(through /users). The RewriteRule I mentioned above does only work if
you have a site, mode and action parameter, but not with just a site
or just a site + mode parameter.

Is there a way to solve this without making a RewriteRule for each
case (or probably a better solution than mine)?

Thanks in advance!

Report this message

#4: Re: Simple mod_rewrite question

Posted on 2008-04-20 15:27:48 by HansH

"k3pp0" <upthekhyber@gmail.com> schreef in bericht
news:6839a859-e6ad-43e7-b590-7cd2f5d88c05@a22g2000hsc.google groups.com...

> This works fine:
> RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$
> index.php?site=$1&mode$2&action=$3 [L]
>
> But http://foo.bar/index.php?site=users&mode=manage
> (note that there's no action parameter) should also be
> accessible through the pretty url (/users/manage) and
> so should http://foo.bar/index.php?site=users (through
> /users).
> The RewriteRule I mentioned above does only work if you
> have a site, mode and action parameter, but not with just
> a site or just a site + mode parameter.
>
> Is there a way to solve this without making a RewriteRule
> for each case (or probably a better solution than mine)?
>
Try on a single line the untested
RewriteRule ^([^/\.]+)(/([^/\.]+))?(/([^/\.]+))?/?$
index.php?site=$1&mode=$3&action=$5 [L]

HansH

Report this message