Как добавить правильное правило для перезаписи страницы в .htaccess? - PullRequest
1 голос
/ 21 октября 2011

Я пытаюсь создать систему разбивки на страницы на моем сайте.

Раньше у меня было это:

RewriteRule ^famille/([^/]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1 [L]

И я мог попасть на мою страницу так:

http://blabla.net/famille/131-articles_de_cave.html

Итак, теперь я добавляю правило для paginate:

RewriteRule ^famille/([^/]*)-([^-]*)-([^-]*)\.html$ /?fond=famille&id_rubrique=$1&page=$3 [L]

Если продолжить:

http://blabla.net/famille/131-articles_de_cave-2.html (для второй страницы) это работает.

Но если я на первой странице, я получаю ошибку 404:

http://blabla.net/famille/131-articles_de_cave.html

Как решить эту проблему?(Мне нужно зайти на первую страницу без записи номера страницы)

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Используете ли вы оба правила или только одно?

Если вы используете оба правила в следующем порядке:

RewriteRule ^famille/([^/]*)-([^-]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1&page=$3 [L]
RewriteRule ^famille/([^/]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1 [L]

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

RewriteRule ^famille/([^-/]*)-([^-]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1&page=$3 [L]
RewriteRule ^famille/([^-/]*)-([^-]*)\.html$ /fond=famille&id_rubrique=$1 [L]

Или, может быть, просто поменять местами правила?

PS: Согласно http://www.w3.org/Provider/Style/URI вы можете не указывать .html ...

1 голос
/ 21 октября 2011

Дефис перед номером страницы - ваша проблема.Сделайте это необязательно, попробуйте это:

RewriteRule ^famille/([^/]*)-([^-]*)-?([^-]*)\.html$ /?fond=famille&id_rubrique=$1&page=$3 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...