Forum Moderators: phranque

Message Too Old, No Replies

Multiple RewriteRules

         

zotium

4:17 pm on Nov 1, 2008 (gmt 0)

10+ Year Member



Hi Guys, is there any way to condense these codes into one line ?

What I want to achieve is to rewrite URLs like /restaurants/chinese/dumplings into sub.php?page=/restaurants/chinese/dumplings and so on with longer URLs...

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)/(.*)$ sub.php?page=$1/$2 [L]
RewriteRule ^(.*)/(.*)/(.*)$ sub.php?page=$1/$2/$3 [L]
...
RewriteRule ^(.*)/(.*)/(.*)/(.*)/(.*)$ sub.php?page=$1/$2/$3/$4/$5 [L]

ag_47

5:46 pm on Nov 1, 2008 (gmt 0)

10+ Year Member



Since only ONE parameter is passed to the script, there's no need for multiple rewrite variables. Try:

RewriteRule ^([a-z0-9A-Z/]+)$ sub.php?page=$1 [L]

**I don't know if '/' is a special character, you might need to escape it.

jdMorgan

6:07 pm on Nov 1, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



"/" is not a special character, so your pattern is correct as-is. The escaping rules differ within [grouped alternates] and outside of groups, but in either case, "/" does not need to be escaped in mod_rewrite regex patterns.

Jim

jdMorgan

6:11 pm on Nov 1, 2008 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



You could, however, speed it up a bit:

RewriteRule ^([a-z0-9/]+)$ sub.php?page=$1 [NC,L]

Using the [NC] flag to make the compare case-insensitive yields about a 30% speed-up.

Jim

zotium

1:22 pm on Nov 2, 2008 (gmt 0)

10+ Year Member



Thanks a lot guys! appreciate the help!