重写规则 - 只是想知道它有可能吗?

时间:2016-11-20 10:24:45

标签: php apache mod-rewrite url-rewriting

示例:

我想创建一个包含不同分类变量的网址。还有一个订单。第一个变量是蔬菜({variable01}),第二个是fruits({variable02}),第三个是树({variable03})等。

xxx.com/ {variable01} - {variable02} - {variable03} - {variable04} -......

是的我得到了这个网址。

BUT

如果一个变量有两个单词(或三个)怎么办?我希望分隔符也是一个连字符(布鲁塞尔 - 豆芽)?

示例:

xxx.com/brussels-sprouts- {variable02} - {variable03} - {variable04} -......

xxx.com/ {variable02} -green-apple- {variable03} - {variable04} -......

xxx.com/的布鲁塞尔豆芽 - 绿苹果

这怎么可能?

感谢。

1 个答案:

答案 0 :(得分:0)

无法再指定变量的边界,因此只有知道变量的确切数量且只有1个变量可能包含连字符才有可能。您可以为此创建一个正则表达式:

第一个变量:

^([\w-]+)-(\w+)-(\w+)-(\w+)$

第二个变量:

^(\w+)-([\w-]+)-(\w+)-(\w+)$

但是:如果你知道每个变量最多只能有1个连字符,你也可以这样做:

/ VAR1-foo1-VAR2-foo2的-VAR3-foo3-VAR4

RewriteRule ^(\w+(-\w+)?)-(\w+(-\w+)?)-(\w+(-\w+)?)-(\w+(-\w+)?)$ index.php?var1=$1&var2=$3&var3=$5&var4=$7 [L]

结果是:

array (
    'var1' => 'var1-foo1',
    'var2' => 'var2-foo2',
    'var3' => 'var3-foo3',
    'var4' => 'var4',
)