mod_rewrite и сегменты

Статус
В этой теме нельзя размещать новые ответы.

indian.rider

Постоялец
Регистрация
20 Окт 2008
Сообщения
119
Реакции
26
Провозился с правилами для mod_rewrite чтобы

и это: mysite/news/10/11/2008/224372/

и это: mysite/news/224372/

отдавало новость с этим id: 224372

И вот что обнаружил, если у меня есть правила тпа этих:

RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /index.php/news/$1/
RewriteRule ^news\/([0-9]{1,10})\/? /index.php/news/$1/

то я получаю странные сегменты:

1. если путь = mysite/news/10/11/2008/224372/

то сегменты:

segment 1: index.php
segment 2: news
segment 3: 224372
segment 4: 10
segment 5: 11
segment 6: 2008
segment 7: 224372

2: если путь = mysite/news/224372/

то сегменты:

segment 1: index.php
segment 2: news
segment 3: 224372
segment 4: 224372

И совершенно случайно попробовал без правил mod_rewrite:

1. если путь = mysite/news/10/11/2008/224372/

то сегменты:

segment 1: news
segment 2: 10
segment 3: 11
segment 4: 2008
segment 5: 224372

2: если путь = mysite/news/224372/

то сегменты:

segment 1: news
segment 2: 224372

Получается, что работа с сегментами практически исключает работу с mod_rewrite? Я в недоверии и восторге одновременно...
 
Господа, я погорячился.

Для того, чтобы ЕЕ понял, что это одиночная страница, id должен идти во втором сегменте. Поэтому правила нужны.

А хрень с сегментами у меня получалась потому, что я не ставил [L] в конце правил.

Небольшой пример:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /index.php/news/$1/ [L]
RewriteRule ^news\/([0-9]{1,10})\/? /index.php/news/$1/ [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^(news.*)
RewriteRule ^(.*)$ /index.php/$1/ [L]

И после мы получаем сегменты:

segment 1: news
segment 2: 224372

и в этом случае:

Для просмотра ссылки Войди или Зарегистрируйся

и в этом:

Для просмотра ссылки Войди или Зарегистрируйся

Если вопросов нет -- можно закрывать тему.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху