.htaccess конфликт имен и имен - PullRequest
2 голосов
/ 04 марта 2012

У меня другой URL (настройка в .htaccess), и теперь я хочу добавить к нему больше возможностей.

например:

  • / section /
  • / section / 1 /
  • / section / 3 / name /

при этом будет отображена страница раздела (список элементов) с использованием сортировки по умолчанию, вторая страницачисло, третье и четвертое - сортировка и сортировка по.в этом случае порядок по имени desc по умолчанию.

сейчас, я также хочу:

  • / section /
  • / section / 1 /
  • / section / 3 / product

, который является разделом, идентификатором продукта и названием продукта (так что я могу запросить по id по эффективности)

у меня пока:

RewriteEngine On
RewriteRule ^([^/]+)$ index.php?section=$1
RewriteRule ^([^/]+)/([0-9]+)$ index.php?section=$1&pagenum=$2
RewriteRule ^([^/]+)/([0-9]+)/([^/]+)$ index.php?section=$1&pagenum=$2&orderby$3

это работает для одного, но не для обоих, какие-либо рекомендации?

1 Ответ

4 голосов
/ 04 марта 2012

Вот что вы можете сделать:

RewriteEngine On
RewriteBase /

Вы можете использовать это для общей функциональности:

RewriteRule ^([^/]+)$ index.php?section=$1 [L,NC]
RewriteRule ^([^/]+)/([0-9]+)$ index.php?section=$1&pagenum=$2 [L,NC]

По умолчанию вы не хотите отображать продукт безимя (при условии, что вы хотите SEO URL)

Теперь для конкретной страницы:

RewriteRule ^([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/?$ product.php?section=$1&id=$2&name=$3 [L,NC]

Обратите внимание на имя файла здесь.Потому что, если у вас есть 3 элемента (раздел / идентификатор / имя), это означает, что вы хотите отобразить продукт.

А теперь, специфичный для списка / заказа

RewriteRule ^([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/(asc|desc)/?$ list.php?section=$1&pagenum=$2&sortcolumn=$3&orderby=$4 [L,NC]

Обратите внимание также на имя файла здесь.Если вы добавляете desc или asc в конце URL, это означает, что вы отобразите список продуктов.Эти последние параметры позволят переключаться между товарами и списком товаров.Конечно, вы должны постоянно использовать ключевое слово asc или desc.Другой альтернативой, которую вы можете использовать, является использование слова list или любого другого соответствующего имени для отображения примера списка:

RewriteRule ^list/([a-z0-9\-]+)/([0-9]+)/([a-z0-9\-]+)/(asc|desc)?$ list.php?section=$1&pagenum=$2&sortcolumn=$3&orderby=$4 [L,NC]

В этом случае все правила, начинающиеся с list, будут отображать списокпродуктов, а не сам продукт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...