.htaccess 不同参数的htaccess

.htaccess 不同参数的htaccess,.htaccess,mod-rewrite,url-rewriting,friendly-url,.htaccess,Mod Rewrite,Url Rewriting,Friendly Url,我正试图通过.htaccess文件在我的url中添加一个参数。我有5个参数,3个int,1个float(例如3.5)和一个字符串 有4个参数,没有字符串,工作正常;但是,如果我尝试添加第五个参数,这个参数的get变量将使用第四个参数(float)的小数部分 我不明白为什么。这是具有4个参数的htaccess行: RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)$ tuto

我正试图通过.htaccess文件在我的url中添加一个参数。我有5个参数,3个int,1个float(例如3.5)和一个字符串

有4个参数,没有字符串,工作正常;但是,如果我尝试添加第五个参数,这个参数的get变量将使用第四个参数(float)的小数部分

我不明白为什么。这是具有4个参数的htaccess行:

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)$ tutor.php?id=$1&p=$2&z=$3&v=$4 [L]
相反,当我添加第五个参数时,该行变为:

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)&([A-Za-z0-9-]+)$ tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [L]
例如,如果search是“mathematics”,v是
3.5
,则url的取值正确,但search的get变量取值
.5

RewriteRule sedi/([0-9]+)       - 1
/ripetizioni/filtra/([0-9]+)&   - 2
([0-9]+)&                       - 3
([0-9](.[0-9])?)&               - 4/5
([A-Za-z0-9-]+)$                - 6
 tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [L]
我猜错地方了。但是,如果需要带点的第5个元素,则需要apply:\。(斜线点,转义点符号)规则

编辑:

第四个元素中有第五个元素,所以你想要的第五个元素是第六个,所以试试这个:

([0-9](\.[0-9])?)&               - 4/5
tutor.php?id=$1&p=$2&z=$3&v=$4&search=$6 [L]

请改用以下规则:

RewriteRule sedi/(\d+)/ripetizioni/filtra/(\d+)&(\d+)&([.\d]+)&([a-z\d]+)$ tutor.php?id=$1&p=$2&z=$3&v=$4&search=$5 [NC,L]

您所经历的行为正是由于jskindle在中提到的原因。

为什么要将浮点值拆分为两个变量?@jeroen浮点变量没有拆分。它可以是一个单变量,带有可选的小数部分。当您使用括号时,如果值在第五个参数中,您将捕获该值。您应该使用非捕获括号或只对整数使用
[。\d]
。@jeroen喜欢下面hjpotter92的建议吗?我不明白我的规则有什么不同。第四个元素是单个浮点变量。所以,带点的元素是第四个,而不是第五个。这个规则和斜杠是怎么回事?我试试你的建议。谢谢你。