Задать вопрос
bismoney
@bismoney

Как исправить Rewrite?

Уже неделю не могу побороть проблему, уже реально все сил нет.
Описываю мою беду...

Я переехал с DLE на Drupal, перенес всю инфу и прочее.
Страниц более чем 5000, адреса страниц поменялись но очень просто к примеру...

на DLE было так
/razdel/584_ya_vottakaya_stranica.html
Где 584 это ID новости в DLE.

То есть в Drupal такого нет и в Drupal url выглядит так
/razdel/ya_vottakaya_stranica.html

И все бы клево, пишем обычное Rewrite правилодля этого
RewriteRule ^(razdel\/)([0-9]+-)([-a-z0-9]*).html$ /$1$3.html [R=301,L]


Которое делает редирект
C /razdel/584_ya_vottakaya_stranica.html
НА /razdel/ya_vottakaya_stranica.html

И оно прекрасно работает НО появилась проблема!
Есть вот такая новость к примеру
12 лет дали ему
Тоесть url в DLE у него
ID+название новости
543_12_let_dali_emy.html
И вот тут рождается проблема!
Правило Rewrite проверяет url и видит
543_12_let_dali_emy.html
Отрезает от него 543_ и редиректит 301
И потом в url видит
12_let_dali_emy.html
И опять отрезает 12_
А 12 в нашем случае уже название новости!

Проблема в том что он читает правило два раза.
Как я только не пытался заставить читать правило 1 раз, все без успешно
Даже пробовал сделать nginx правило...

Помогите пожалуйста люди добрые!!!!
Как исправить эту ошибку?

Может кто-то расскажет секрет как сделать что правило срабатывало для URL 1 раз.
Или к примеру может кто то поможет сделать это на php.
  • Вопрос задан
  • 2252 просмотра
Подписаться 1 Оценить 4 комментария
Пригласить эксперта
Ответы на вопрос 2
zniki_ru
@zniki_ru
Drupal ninja
Попробуй регулярку
^razdel\/\d+_(\d+_)?([\d\w_]*)\.html$ /razdel/$1$2.html


Рекомендую для прочтения Джеффри Фридл "Регулярные выражения"
Ответ написан
Комментировать
Установите модуль pathauto, он позволяет создавать шаблоны для URL.
в данном случае шаблон будет выглядеть примерно так:
razdel/[node:nid]_[node:title].html

вы можете создавать шаблоны для всех типов нод или для каждого типа отдельно.

так вам не придется ничего меня в rewrite.

Если у вас заголовки на русском, не забудьте поставить модуль Transliteration для транслитерации синонимов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы