我需要处理这种网址:
localhost/twitter/user/home
我的重写规则是:
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?url=$1 [NC,L]
^([^/\.]+)/([^/\.]+)/?$ index.php?url=$1
指的是模式
[NC]
没有案例
[L]
标志会导致mod_rewrite
停止处理规则集
我需要以以下形式获取网址:
$_GET['url'] = user/home
但我得到了:
$_GET['url'] = user
得到了解决
RewriteRule ^([^/\.]+/[^/\.]+)/?$ index.php?url=$1 [NC,L]
答案 0 :(得分:1)
更改
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?url=$1 [NC,L]
到
RewriteRule ^([^/\.]+)/([^\.]+)/?$ index.php?url=$1 [NC,L]
你应该得到user/home
答案 1 :(得分:0)
造成这种情况的原因是由重写规则中的分组引起的。第一个()
之间的任何内容都设置为$1
。要访问网址的第二部分($2
)(在您的情况下为home
,在规则中的第二个()
之间),您可以
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?url=$1&action=$2 [NC,L]
或将您的规则重写为
RewriteRule ^([^/\.]+/[^/\.]+)/?$ index.php?url=$1 [NC,L]