以下是我网站个人资料页面的htaccess规则:
RewriteRule ^users/([0-9]+)/?(.+)?/?(.+)? profile.php?id=$1&slug=$2&tab=$3&%{QUERY_STRING}
点击用户个人资料上的标签页,例如收藏夹:
/用户/ 83028 /森 - 约翰逊/收藏夹
名称为 slug 的$_GET
变量正在接收nathan-johnson/favorites
而不只是nathan-johnson
而tab
变量为空白,根据var_dump
:
array(3) {
["id"]=> string(5) "83028"
["slug"]=> string(24) "nathan-johnson/favorites"
["tab"]=> string(0) "" }
看起来问题出在我的htaccess regexp(上图)上,但我没有看到它的问题。
提前致谢。
答案 0 :(得分:0)
因为你的正斜杠是可选的(通过/?
),所以(.+)
分组是贪婪的并且会全部吞噬它们。你需要通过添加? :(。+?)
此外,您应该使用(.+)?
代替*
而不是{1}},而不是{1}}。
尝试:
RewriteRule ^users/([0-9]+)/?([^/]*)/?(.*?)?$ profile.php?id=$1&slug=$2&tab=$3&%{QUERY_STRING}
此外,您可以只使用%{QUERY_STRING}
标记,而不是使用QSA
:
RewriteRule ^users/([0-9]+)/?([^/]*)/?(.*?)?$ profile.php?id=$1&slug=$2&tab=$3 [L,QSA]