【问题标题】:htaccess with different parametershtaccess 具有不同的参数
【发布时间】:2015-07-05 02:20:02
【问题描述】:

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

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

我不明白为什么。这是具有 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]

例如,如果搜索是“数学”并且v是3.5,则url正确,但搜索的get变量需要.5

【问题讨论】:

  • 你为什么要把你的浮点数分成两个变量?
  • @jeroen 浮点变量未拆分。它可以是单个变量,带有可选的小数部分。
  • 当您使用括号时,如果它在第五个参数中,您将捕获该值。您应该使用非捕获括号或仅使用 [.\d] 表示整数。
  • @jeroen 喜欢下面hjpotter92 的建议吗?

标签: .htaccess mod-rewrite url-rewriting friendly-url


【解决方案1】:
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 个元素的位置。但是,如果您需要第 5 个带点的元素,则需要应用:\。 (斜线点,转义点符号)规则

编辑:

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

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

【讨论】:

  • 我不明白我的规则有什么不同。第四个元素是单个浮点变量。所以,带点的元素是第四个,而不是第五个。规则如何变成斜线?
【解决方案2】:

改用以下规则:

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在the other answer中提到的原因。

【讨论】:

  • 我会试试你的建议。谢谢你。
猜你喜欢
  • 2016-05-22
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多