RewriteRule拆分参数的最后一个字符

huangapple go评论52阅读模式
英文:

RewriteRule splits parameter's last character

问题

这里我试图重新编写.htaccess中的参数,并使最后一个参数变成可选的:

RewriteRule ^produktas/([0-9a-zA-Z_-]+)/?([0-9a-zA-Z_-]+) /produktas?slug=$1&var=$2 [NC,L]

所以,如果我输入http://site.lt/produktas/the-glass,我期望实际上得到的是http://site.lt/produktas?slug=the-glass,但第二个参数var我希望是空的。但当我运行它时,我得到了第一个参数并且我的$_GET变量看起来像这样:

Array ( [slug] => the-glas [var] => s )

如果我只输入一个参数,像这样:http://site.lt/produktas/the-glass,我该如何让第一个参数保持完整,第二个参数为空?

英文:

Here I am trying to rewrite parameters in .htaccess and make last parameter optional:

RewriteRule ^produktas/([0-9a-zA-Z_-]+)/?([0-9a-zA-Z_-]+) /produktas?slug=$1&var=$2 [NC,L]

So if I would type http://site.lt/produktas/the-glass, then I expect actually to get http://site.lt/produktas?slug=the-glass, but second parameter var I expect to be empty. But when I run it I get my first parameter spit and my $_GET variable looks like this:

Array ( [slug] => the-glas [var] => s )

How can I get first parameter full and second empty if I type only one parameter like this:
http://site.lt/produktas/the-glass ?

答案1

得分: 1

你的正则表达式模式由于使用了量词 + 和一个可选的 / 而不正确。

你可以使用以下规则:

RewriteRule ^produktas/([\w-]+)(?:/([\w-]+))?/?$ produktas?slug=$1&var=$2 [NC,L,QSA]
英文:

Your regex pattern is not correct due to quantifier + used and an optional / between.

You may use this rule:

RewriteRule ^produktas/([\w-]+)(?:/([\w-]+))?/?$ produktas?slug=$1&var=$2 [NC,L,QSA]

huangapple
  • 本文由 发表于 2023年4月20日 00:05:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/76056654.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定