当涉及到。htaccess文件时,我是一个完全的新手…我要做的是检查GET变量是否存在,?si=10
,并将其传递给重写,但前提是它存在。
RewriteRule ^user/([^/.]+)/?$ profile/index.php?name=$1
这样,当我说website.com/user/Username/
时,它会在服务器上转到website.com/profile/?name=Username
。但是,当我添加website.com/user/Account/?si=10
时,服务器没有将si
变量传递到实际加载的页面。知道我该怎么做吗?对不起,如果我说得不好…
尝试QSA标志
RewriteRule ^user/([^/.]+)/?$ profile/index.php?name=$1 [QSA]
从手册…
当替换URI包含查询字符串,默认行为rewriterrule是丢弃现有的查询字符串,并将其替换为新生成的一个。使用[QSA]标志导致查询字符串为总和。
你可以这样做:
RewriteCond %{QUERY_STRING} ^si=([0-9]+)$ // replace regex as neccesary
RewriteRule ^user/([^/.]+)/?$ profile/index.php?name=$1&si=%1
百分号%表示来自rewriteCond的一个或多个匹配项,对于来自rewriterrule的匹配项,您可以正常使用美元符号。这使您可以完全控制查询变量,但是,QSA确实更简单。