Apache mod_rewrite для схемы URL компонента / действия / идентификатора - PullRequest
0 голосов
/ 09 августа 2011

У меня есть система на основе компонентов, которую я пытаюсь сделать маршрутизацией для использования mod_rewrite.По какой-то причине я не могу получить правильный синтаксис для всех случаев для правильной работы.Ниже приведены четыре контрольных примера (я могу заставить работать только последний):

/component/action/24_char_id  should be rewritten as /index.php?c=component&a=action&id=24_char_id
/component/24_char_id  should be rewritten as /index.php?c=component&id=24_char_id
/component/action should be rewritten as /index.php?c=component&a=action
/component should be rewritten as /index.php?c=component

Вот три правила, которые у меня есть:

RewriteRule ^([^/]+)/(.*)/([0-9a-z]{24})?/?$ /index.php?c=$1&a=$2&id=$3 [L,QSA]
RewriteRule ^([^/]+)([0-9a-z]{24})?/?$       /index.php?c=$1&id=$2      [L,QSA]
RewriteRule ^([^/]+)(?:/(.*))?/?$            /index.php?c=$1&a=$2       [L,QSA]

URL-адреса должныпереписать, как указано выше, например, /index.php?c=$1&a=$2&id=$3, где «c» - это компонент, «a» - это действие, а «id» - это длинный 24-значный идентификатор.Обратите внимание, что в этой схеме есть три варианта URL.

Любая помощь будет принята - я застрял!

1 Ответ

0 голосов
/ 26 августа 2011

Понял после некоторых проб и ошибок:

RewriteRule ^([^/]+)/?([0-9a-z]{24})?/?$ /index.php?c=$1&id=$2 [L,QSA]
RewriteRule ^([^/]+)/([a-z]+)/?([0-9a-z]{24})?/?$ /index.php?c=$1&a=$2&id=$3 [L,QSA]
...