通过国防部重写,使邮政标题作为url中的slu </s>

我以前发布了一个问题,但我不满意答案。 我有一个url,例如

http://example.com/details.php?a=100&b=101&slug=power-programming-in-php 

我想通过重写规则来编写它

 http://example.com/power-programming-in-php 

我目前正在使用一个规则:

 RewriteRule ^([a-zA-Z0-9]*-[a-zA-Z0-9]*)$ paper-ads-details.php?a=$1&b=$2&slug=$3 [L] 

我现在卡住了,有没有人有任何build议?

至less你的RewriteRule是错误的,因为它指的是三个不同的callbackvariables,但你只有一组匹配引用! a和b的100和101值应该来自哪一个只能猜测。 你写的正则expression式也不符合你给出的例子,因为它有四组破折号,而不是一个破折号。 试试这个:

 RewriteRule ^([-a-zA-Z0-9]+)$ /paper-ads-details.php?a=100&b=101&slug=$1 [L] 

请注意,由于我用短划线开始了字符类[] ,因此短划线被理解为将选项列表添加到选项列表中,而不是像在az语法中那样指示其他字符之间的范围。 这只适用于因为它是第一个字符。 我的规则应该匹配一个string与任何数量的破折号,但没有任何时期。 如果一段时间或其他字符出现,它应该恢复到正常的URL匹配。