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
.
到目前为止我有什么: 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