具有不同参数的 htaccess

htaccess with different parameters

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

有4个参数,没有字符串,效果很好;但是如果我尝试添加第五个参数,这个 get 变量将采用第四个参数(浮点数)的小数部分。

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

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)$ tutor.php?id=&p=&z=&v= [L]

相反,当我添加第五个参数时,该行变为:

RewriteRule sedi/([0-9]+)/ripetizioni/filtra/([0-9]+)&([0-9]+)&([0-9](.[0-9])?)&([A-Za-z0-9-]+)$ tutor.php?id=&p=&z=&v=&search= [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=&p=&z=&v=&search= [L]

我猜错了第5个元素的地方。但是,如果您需要带点的第 5 个元素,则需要应用:\。 (斜线点,转义点符号)规则

编辑:

你的第 5 个元素在第 4 个里面,所以你想要的第 5 个元素是第 6 个,所以试试这个:

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

改用以下规则:

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

您遇到的行为正是因为jskindle在the other answer中提到的原因。