Вы могли бы объединить этих правил в одно, хотя, является ли это "упрощением" или нет, это другой вопрос - поскольку единственное правило более сложное .
Например,
RewriteRule ^service/?$ service.php [NC]
RewriteRule ^service/([^/]+)/?$ service.php?id=$1 [NC]
Может быть представлен как:
RewriteRule ^service/?(?:([^/]+)/?)?$ service.php?id=$1 [NC]
В основном вам нужно сделать дополнительные части URL необязательными и не захватывать ( ie. (?:<regex>)?
)
Обратите внимание, что параметр id
присутствует всегда и поэтому может быть пустым.
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 ^hilfe(?:/?([^/]+)(?:/?([^/]+)(?:/?([^/]+)/?)?)?)?$ help/help.php?content=$1_$2_$3 [L,NC]
Вложенность в подшаблонах, заключенных в скобки, затрудняет чтение (поддержание, отладку и т. Д. c.)
Результирующий параметр URL content
URL всегда будет иметь 3 части ($1
, $2
и $3
), за исключением того, что они могут быть пустыми, в результате чего content=__
, content=foo__
, content=foo_bar_
et c.