对于.htaccess文件,我是一个完整的菜鸟......我要做的是检查GET变量是否存在,?si=10
,并将其传递给重写,但是只有它存在。
RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1
这样,当我说website.com/user/Username/
时,它会转到服务器website.com/profile/?name=Username
上。但是当我添加do website.com/user/Account/?si=10
时,服务器没有将si
变量传递到实际加载的页面上。知道怎么做吗?对不起,如果我措辞严厉......
答案 0 :(得分:4)
尝试QSA flag
RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1 [QSA]
从手册......
当替换URI包含a时 查询字符串,默认行为 RewriteRule是丢弃现有的 查询字符串,并将其替换为 新生成的。使用[QSA] flag导致查询字符串 组合
答案 1 :(得分:1)
你可以这样做:
RewriteCond %{QUERY_STRING} ^si=([0-9]+)$ // replace regex as neccesary
RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1&si=%1
百分号%引入来自rewriteCond的匹配或匹配,并且您使用美元符号作为来自rewriteRule的匹配的正常符号。这使您可以完全控制查询变量,但是,QSA更简单。