英文:
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]
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论