htaccess mod_rewrite中的多个变量

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!

我希望 rando.com/game/basic/1 code>指向 rando.com/game.php?type=basic&id=1.

nnn

到目前为止我有什么: p>

  #Fix重写
Options -Multiviews 
 
#Mod重写
Options + FollowSymLinks 
RewriteEngine On 
RewriteBase / 
RewriteCond%{REQUEST_FILENAME}!-f 
RewriteCond%{REQUEST_FILENAME}!-d 
 
RewriteRule ^ game /  ([^ /] +)/([^ \。] +)\ $ /game.php?type=$1&id=$2
nn

这不是 不工作 我收到404错误。 p>

任何帮助表示赞赏! 谢谢! p> div>

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

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