[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ЧПУ и пагинация не дружат вместе (файл htaccess)
bybad
Здравствуйте, товарищи.
Пожалуйста, помогите разобраться и решить проблему.

Сейчас работаю над созданием ЧПУ.
Помимо этого на сайте есть пагинация (page).

В таком ключе всё работает почти как надо:

Options +FollowSymlinks
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*).php$ post.php?id=$1 [L]
RewriteRule ^page/([0-9]+)$ index.php?page=$1[L]

Но ещё я хочу убрать .php из строки, но если я удаляю его из Htaccess, перестаёт работать пагинация.

Сделал вот так (удалил .php):

RewriteRule ^(.*)$ post.php?id=$1 [L]
RewriteRule ^page/([0-9]+)$ index.php?page=$1 [L]

Теперь при переходе по "пейджеру" меня перебрасывает на страницу post.php и выдаёт ошибку.
Подскажите, как правильно составить выражение, что бы ссылки на страницы были без .php и работала постраничная навигация?
Заранее благодарю за любые подсказки и решения.
bestxp
не использовать чпу для таких вещей как пагинация и тд, она там не нужна от слова совсем)
DragonNoir
Не согласен. Для SEO это довольно важно, т.к. тот же Гугль при индексации страниц игнорирует все или почти все GET-параметры. Поэтому для него страницы http://blabla.com/lalala/?page=2 и http://blabla.com/lalala/?page=3 две с разным контентом по одному адресу

_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
depp
он имел ввиду что для сео пагинация не нужна в принципе.
но на вопрос автора все равно не ответил.
DragonNoir
Цитата (bybad @ 25.03.2016 - 13:22)
RewriteRule ^(.*)$ post.php?id=$1 [L]
RewriteRule ^page/([0-9]+)$ index.php?page=$1 [L]


Теперь при переходе по "пейджеру" меня перебрасывает на страницу post.php и выдаёт ошибку.


И правильно делает, т.к. под правило ^(.*)$ попадает любая строка запроса. Попробуйте поменять эти правила местами.

_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
bybad
Цитата (DragonNoir @ 25.03.2016 - 14:34)
Цитата (bybad @ 25.03.2016 - 13:22)
RewriteRule ^(.*)$ post.php?id=$1 [L]
RewriteRule ^page/([0-9]+)$ index.php?page=$1 [L]


Теперь при переходе по "пейджеру" меня перебрасывает на страницу post.php и выдаёт ошибку.


И правильно делает, т.к. под правило ^(.*)$ попадает любая строка запроса. Попробуйте поменять эти правила местами.

Пробовал - сайт просто виснет.
Целый день варианты разные пробую - голова уже кругом.

Есть варианты?
DragonNoir
Цитата (bybad @ 25.03.2016 - 19:49)
Пробовал - сайт просто виснет.

Да, все правильно. Я забыл, что после первой переадресации .htaccess снова выполняется.
Вообще, в таких случаях пишут роутер, а в .htaccess оставляют только одну точку входа.

_____________
- Сколько тебе надо времени на задачу?
- Месяц.
- А если дам тебе помощника?
- Тогда два месяца.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.