Tom
Tom

Reputation: 927

Multiple variables in htaccess mod_rewrite

I want rando.com/game/basic/1 to point towards rando.com/game.php?type=basic&id=1.

What I have so far:

#Fix Rewrite
Options -Multiviews

# Mod Rewrite
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^game/([^/]+)/([^\.]+)\$ /game.php?type=$1&id=$2

This isn't working. I get a 404 error.

Any help is appreciated! Thanks!

Upvotes: 0

Views: 150

Answers (2)

elixenide
elixenide

Reputation: 44823

Your rule contains \$, which looks for a literal $, rather than the end of the string. You want this:

RewriteRule ^game/([^/]+)/([^\.]+)$ /game.php?type=$1&id=$2

Upvotes: 1

nimmneun
nimmneun

Reputation: 1159

Why not just go the typical way that some MVC frameworks do and just trim & explode the url in php like so? :

in htaccess redirect to just game.php?url=$1

$url = rtrim($_GET['url'], '/'); // to prevent empty array values caused by trailing slash
$url = explode('/', $url);

You would end up with type in $url[0] and id in $url[1]. If you're going to accept only numbers and letters you could write that htaccess line like so:

RewriteRule ^game/([a-zA-Z0-9/]+)$ /game.php?url=$1

Upvotes: 1

Related Questions