Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess mod_rewrite Simplify rules:我可以将多个规则简化为一个规则吗?_.htaccess_Mod Rewrite - Fatal编程技术网

.htaccess mod_rewrite Simplify rules:我可以将多个规则简化为一个规则吗?

.htaccess mod_rewrite Simplify rules:我可以将多个规则简化为一个规则吗?,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我可以将这两条规则(如果它们工作正常)合并为一条规则吗 RewriteRule ^service/?$ service.php [NC] RewriteRule ^service/([^/]+)/?$ service.php?id=$1 [NC] 我能把这4条规则简化为一条吗 RewriteRule ^hilfe/([^/]+)/([^/]+)/([^/]+)/?$ help/help.php?content=$1_$2_$3 [L,NC]

我可以将这两条规则(如果它们工作正常)合并为一条规则吗

RewriteRule ^service/?$               service.php [NC]
RewriteRule ^service/([^/]+)/?$       service.php?id=$1 [NC]
我能把这4条规则简化为一条吗

RewriteRule ^hilfe/([^/]+)/([^/]+)/([^/]+)/?$        help/help.php?content=$1_$2_$3 [L,NC]
RewriteRule ^hilfe/([^/]+)/([^/]+)/?$                help/help.php?content=$1_$2 [L,NC]
RewriteRule ^hilfe/([^/]+)/?$                        help/help.php?content=$1 [L,NC]
RewriteRule ^hilfe/?$                                help/help.php [L,NC]
多谢各位

您可以将这些规则合并为一个,尽管这是否是“简化”是另一回事,因为单个规则更复杂

比如说,

可以表示为:

RewriteRule ^service/?(?:([^/]+)/?)?$ service.php?id=$1 [NC]
RewriteRule ^hilfe(?:/?([^/]+)(?:/?([^/]+)(?:/?([^/]+)/?)?)?)?$ help/help.php?content=$1_$2_$3 [L,NC]
基本上,您需要将URL的附加部分设置为可选和非捕获(即,
(?:)?

请注意,
id
参数始终存在,因此可能为空

可以表示为:

RewriteRule ^service/?(?:([^/]+)/?)?$ service.php?id=$1 [NC]
RewriteRule ^hilfe(?:/?([^/]+)(?:/?([^/]+)(?:/?([^/]+)/?)?)?)?$ help/help.php?content=$1_$2_$3 [L,NC]
括号内的子模式的嵌套使其更难读取(维护、调试等)


生成的
content
URL参数将始终包含3个部分(
$1
$2
$3
),但它们可能是空的,从而导致
content=\uuuu
content=foo\uu
等。

非常感谢。我同意,单一规则看起来更复杂。我可能会坚持使用多个规则的解决方案。不客气。它实际上比我第一次发布的要复杂一点。因为尾随斜杠在每个规则上都是可选的(除了最长的规则外,我在所有规则上都强制使用它,有3个可变部分)。我已经更新了“组合”规则,允许在所有变体上省略尾部斜杠。然而,我也可能坚持使用多个规则的解决方案。