繁体   English   中英

Htaccess 重写规则条件

[英]Htaccess Rewrite Rule Conditional

当谈到 .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变量传递到实际加载的页面上。 知道我会怎么做吗? 对不起,如果我措辞不好..

试试QSA 标志

 RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1 [QSA]

从手册...

当替换 URI 包含查询字符串时,RewriteRule 的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。 使用 [QSA] 标志会合并查询字符串。

你可以这样做:

RewriteCond %{QUERY_STRING} ^si=([0-9]+)$ // replace regex as neccesary
RewriteRule ^user/([^/\.]+)/?$ profile/index.php?name=$1&si=%1

百分号 % 从 rewriteCond(s) 中引入一个或多个匹配项,您可以正常使用美元符号来处理来自 rewriteRule 的匹配项。 这使您可以完全控制查询变量,但是是的,QSA 更简单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM