Мод переписать с 3 параметрами? - PullRequest
1 голос
/ 21 марта 2010

Я сделал тонны методов, чтобы выяснить, как сделать этот мод перезаписанным, но O был полностью неудачным.

Мне нужен код .htaccess, который переписывается следующим способом:

  • /apple/upcoming/2/handler.php?topic=apple&orderby=upcoming&page=2

Это легко сделать, но проблема в том, что не все параметры требуются, поэтому ссылка каждый раз имеет разные уровни параметров, например:

  • /apple/popular/2/handler.php?topic=apple&orderby=popular&page=2
  • /apple/2/handler.php?topic=apple&orderby=&page=2
  • /all/popular/2/handler.php?topic=all&orderby=popular&page=2
  • /apple/upcoming//handler.php?topic=apple&orderby=upcoming&page=

Итак, вкратце, URL имеет 3 необязательных параметра в одном статическом порядке: (topic) (orderby) (page)

Примечание: параметр ORDERBY может быть «популярным», «предстоящим» или ничего.

Спасибо

Ответы [ 3 ]

1 голос
/ 21 марта 2010

Это должно работать:

RewriteRule     ^([0-9]*)/?$ handler.php?topic=&orderby=&page=$1 [L]
RewriteRule     ^(upcoming|popular)/([0-9]*)/?$ handler.php?topic=&orderby=$1&page=$2 [L]
RewriteRule     ^([^/]*)/([0-9]*)/?$ handler.php?topic=$1&orderby=&page=$2 [L]
RewriteRule     ^([^/]*)/(upcoming|popular)/?$ handler.php?topic=$1&orderby=$2&page= [L]
RewriteRule     ^([^/]*)/(upcoming|popular)/([0-9]*)/?$ handler.php?topic=$1&orderby=$2&page=$3 [L]

Вы должны просто объявить перезаписи в предпочтительном порядке.

1 голос
/ 21 марта 2010

Я бы предложил перенаправить все после имени домена (/ apple / upcoming / 2) на index.php и оттуда использовать php для анализа URL и вызова соответствующей функции.

0 голосов
/ 22 марта 2010

Для указанных выше случаев должны работать правила:

RewriteRule     ^([^/]+)/(\d+)/?$ handler.php?topic=$1&orderby=&page=$2 [L]
RewriteRule     ^([^/]+)/([^/]+)/?$ handler.php?topic=$1&orderby=$2&page= [L]
RewriteRule     ^([^/]+)/([^/]+)/(\d+)/?$ handler.php?topic=$1&orderby=$2&page=$3 [L]
...