将规则index.php?/ controller / method / param重写为/ controller / method / param

时间:2010-05-10 20:31:22

标签: apache mod-rewrite

我需要为此网址重写规则

http://localhost/~user/frame/lib/index.php?/controller/method/12/22/

我怎样才能重写它,我可以这样称呼它

http://localhost/~user/frame/lib/controller/method/12/22/

上述问题的重写规则是什么? 我希望我能清楚地解释我的问题。

2 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteRule $2 !^index\.php$
RewriteRule ^(/~[^/]+/[^/]+/[^/]+)(/.*)? $1/index.php?$2

根据您要使用此规则的位置(我的建议是针对服务器/虚拟主机配置),您可能需要从模式中删除上下文路径前缀。因此,如果您想在 /~user / 中使用.htaccess文件中的规则:

RewriteRule $2 !^index\.php$
RewriteRule ^([^/]+/[^/]+)(/.*)? $1/index.php?$2

或者如果在 /~user / frame / lib /

RewriteRule $0 !^index\.php$
RewriteRule .* index.php?/$0

答案 1 :(得分:0)

RewriteRule ^(.*)lib/(.*)$ / $1lib/index.php?/$2

这是最简单的方法,但不是最强大的,因为它可能会与其他网址混在一起。所以值得彻底检查,或者发布整个.htaccess文件。