Htaccess重写规则条件必选



当涉及到。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确实更简单。

最新更新