By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
438,216 Members | 1,023 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 438,216 IT Pros & Developers. It's quick & easy.

Mod_Rewrite / Regex to PHP URL

P: n/a
I am new to using mod_rewrite and am trying to rewrite a URL to pass values to
my script so that:

http://www.myclient.com/everything/animals/mammals/cats

is transformed into

http://www.myclient.com/index.php?nav[0]=everything&nav[1]=animals&nav[2]=mammals@nav[3]=cats

Specifically, I am looking for an n-ary solution to this problem. I know how to
do it for a discrete number, but how do I do this transformation when the number
of variables to go into the nav array is unknown, and how do I generate the
index number? Can any experience mod_rewrite gurus point me in the right
direction. I'm sure this is a common design pattern.

Thanks.
Feb 14 '07 #1
Share this Question
Share on Google+
3 Replies


P: n/a
Rik
On Thu, 15 Feb 2007 00:15:34 +0100, Dr. No <no@no.nowrote:
I am new to using mod_rewrite and am trying to rewrite a URL to pass
values to my script so that:

http://www.myclient.com/everything/animals/mammals/cats

is transformed into

http://www.myclient.com/index.php?nav[0]=everything&nav[1]=animals&nav[2]=mammals@nav[3]=cats

Specifically, I am looking for an n-ary solution to this problem. I know
how to do it for a discrete number, but how do I do this transformation
when the number of variables to go into the nav array is unknown, and
how do I generate the index number? Can any experience mod_rewrite gurus
point me in the right direction. I'm sure this is a common design
pattern.
As far as I know you cannot, not without really messy toying with
environmental variables.

As you're using PHP, what's wrong with:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?nav=$1

And in PHP:

$nav = isset($_GET['nav']) ? explode('/',$_GET['nav']) : array();
--
Rik Wasmus
Feb 15 '07 #2

P: n/a
"Dr. No" <no@no.nowrote in message
news:qK******************@newssvr11.news.prodigy.n et...
>I am new to using mod_rewrite and am trying to rewrite a URL to pass values
to my script so that:

http://www.myclient.com/everything/animals/mammals/cats

is transformed into

http://www.myclient.com/index.php?nav[0]=everything&nav[1]=animals&nav[2]=mammals@nav[3]=cats

Specifically, I am looking for an n-ary solution to this problem. I know
how to do it for a discrete number, but how do I do this transformation
when the number of variables to go into the nav array is unknown, and how
do I generate the index number? Can any experience mod_rewrite gurus point
me in the right direction. I'm sure this is a common design pattern.

Just use empty brackets: nav[]=everything&nav[]=animals&nav[]=mammals, php
will understand this and create the index numbers for you.

--
"Ohjelmoija on organismi joka muuttaa kofeiinia koodiksi" - lpk
http://outolempi.net/ahdistus/ - Satunnaisesti päivittyvä nettisarjis
sp**@outolempi.net | rot13(xv***@bhgbyrzcv.arg)
Feb 15 '07 #3

P: n/a
Rik wrote:
As you're using PHP, what's wrong with:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?nav=$1

And in PHP:

$nav = isset($_GET['nav']) ? explode('/',$_GET['nav']) : array();
Or even:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1

And in PHP:
$_GET['nav'] = explode('/',$_SERVER['PATH_INFO']);

--
Toby A Inkster BSc (Hons) ARCS
Contact Me ~ http://tobyinkster.co.uk/contact
Geek of ~ HTML/SQL/Perl/PHP/Python*/Apache/Linux

* = I'm getting there!
Feb 15 '07 #4

This discussion thread is closed

Replies have been disabled for this discussion.