我需要处理这种URL:
localhost/twitter/user/home
我的重写规则是:
RewriteRule ^([^/'.]+)/([^/'.]+)/?$ index.php?url=$1 [NC,L]
^([^/'.]+)/([^/'.]+)/?$ index.php?url=$1
表示图案
[NC]
表示无情况
[L]
标志使mod_rewrite
停止处理规则集
我需要以以下形式获取url:
$_GET['url'] = user/home
但我得到了:
$_GET['url'] = user
已解决
RewriteRule ^([^/'.]+/[^/'.]+)/?$ index.php?url=$1 [NC,L]
更改
RewriteRule ^([^/'.]+)/([^/'.]+)/?$ index.php?url=$1 [NC,L]
至
RewriteRule ^([^/'.]+)/([^'.]+)/?$ index.php?url=$1 [NC,L]
您应该得到user/home
这是由重写规则中的分组引起的。第一个()
之间的任何值都被设置为$1
。要访问url的第二部分($2
)(在您的情况下是home
,在您的规则中是第二个()
之间的任何部分),您可以
RewriteRule ^([^/'.]+)/([^/'.]+)/?$ index.php?url=$1&action=$2 [NC,L]
或者将您的规则改写为
RewriteRule ^([^/'.]+/[^/'.]+)/?$ index.php?url=$1 [NC,L]