htaccess mod_rewrite中的多个变量

时间:2014-02-23 21:30:50

标签: php .htaccess mod-rewrite

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

到目前为止我所拥有的:

#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

这不起作用。我收到404错误。

任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不采用一些MVC框架的典型方式,只需修剪和修改像这样爆炸php中的url? :

在htaccess中重定向到game.php?url=$1

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

你最终会输入$ url [0]中的类型和$ url [1]中的id。 如果您只接受数字和字母,您可以像这样编写htaccess行:

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

答案 1 :(得分:1)

您的规则包含\$,它会查找文字$,而不是字符串的结尾。你想要这个:

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