помогита разообраться с add_rewrite_rule
-
Здравствуйте. Помогите пожалуйста разобраться.
Мне необходимо сделать rewrite для ~3000 страниц. (со старого сайта).
но когда я пишу вот такой код:function add_rewrite_rules(){ add_rewrite_rule('^1300/1308.html/$','index.php/?p=20','top'); } add_action( 'init','add_rewrite_rules' );то он не срабатывает. А точнее — при вводе адреса «http://site/1300/1308.html» его перебрасывает по 301 коду на «http://ip-b.ru/1300/1308.html/» и дальше происходит переадресация на главную страницу.
-
Мне необходимо сделать rewrite для ~3000 страниц. (со старого сайта).
А по-нормальному: в хтацессе 301 (+в базе поменять при необходимости) — не?
А по-нормальному: в хтацессе 301
~ 3000 страниц в .htaccess ??
(+в базе поменять при необходимости) — не?
да но в базе есть вот такие url-ы — «/1300/1308.html» как мне его захватить ?
~ 3000 страниц в .htaccess ??
те 3к страниц в функии — это нормально? 🙂
Если что — правила реврайта одинаковы и для хтацесса и для add_rewrite_ruleда но в базе есть вот такие url-ы — «/1300/1308.html» как мне его захватить ?
Регулярками. Только надо ли? Правила ЧПУ поменялись?
Домен поменять не достаточно?Не надо искать проблем, там где их нет. Скажите какие правила ЧПУ (УРЛы) были, и какие стали на др. домене.
А лучше гуглите как перенести сайт на новый домен и прописать 301Не надо искать проблем, там где их нет. Скажите какие правила ЧПУ (УРЛы) были, и какие стали на др. домене.
А лучше гуглите как перенести сайт на новый домен и прописать 301Дык я и сам в курсе что так лучше. но Требоание клиента чтобы 301 небыло.
Уговаривал всякими способами но ни в какую. Знаю, что скажете, надо было клиента послать и не браться за работы но уже 90% работы сделано. остался вот этот редирект.те 3к страниц в функии — это нормально? 🙂
Если что — правила реврайта одинаковы и для хтацесса и для add_rewrite_ruleНу какбы я не собираюсь запихивать все реврайты в одну функцию. просто в старой базе все УРЛы хранились в БД вот их я оттуда буду черпать и соответственно подставляться (или не подставлять add_rewrite…)
Требоание клиента чтобы 301 небыло.
Требование вполне справедливое. Решается в хтацессе.
Я-таки настоятельно рекомендую заюзать гугл, что бы узнать как делать правильно и не подставлять клиента с такими финтами.Требование вполне справедливое. Решается в хтацессе.
Для одного УРЛа — согласен Но для 3тыс урлов ?
Причем которые не подпаают под шаблон!! Наведу пример/006589 /00751d /007740 /0077b8 /0092e5 /0147a4 /017bc1 /019445 /01ad33 /01e00e /01f8ba /01fd24 ....................... /zvezdocheti_stekautsa_v_brekon /zolotye-peski /zolotoi_novi_god_v_birme /zolotoi_ipad_v_dubae /zizn_pi_vdohnovlaet_turistov /zimnii_izrail /zimnie_prazdniki_pribligautsaвсе эти УРЛы хранятся в БД.
Для одного УРЛа — согласен Но для 3тыс урлов ?
Но Вам же их все равно в add_rewrite_rule прописывать! Так какая разница куда писать буковки?
А разница лишь в том, что нагрузка ляжет не на ВП, а на апач. И второй момент — это увидит любой вебмастер, подобравший сайт после Вас и не будет ломать голову откуда такие непонятки.Хотя конечно, 3к редиректов — це занадто 🙂 ИМХО надо поработать с заказчиком на предмет одного редиректа — на морду, например. Или лучше на спец. страницу с поиском и релевантной (ожидаемой) выдачей.
Кста, вариант без правки темы и хтацесса — плагин. Но хтацесс всё же лучше.
А разница лишь в том, что нагрузка ляжет не на ВП, а на апач. И второй момент — это увидит любой вебмастер, подобравший сайт после Вас и не будет ломать голову откуда такие непонятки.
Наверное я прислушаюсь к этому совету. Но всетаки для себя хочу знать почему
function add_rewrite_rules(){ add_rewrite_rule('^1300/1308.html/$','index.php/?p=20','top'); } add_action( 'init','add_rewrite_rules' );вот такой вот код не срабатывает ? а именно если я захожу на страницу 1300/1308.html то мена 301-м редиректом перебрасывает на эту ще страницу но со слешем в конце. А дальше — на главную страницу?
Требоание клиента чтобы 301 небыло.
Требование вполне справедливое. Решается в хтацессе.
Увы, по-простому не решается. WP увидит «кривой» REQUEST_URI и постарается перенаправить куда сочтет нужным.
Я решал аналогичную задачу повешением обработчика на хук init. В двух словах: ищем в базе соответствие, и если оно есть, делаем фейк URI так, чтобы выводилось то, что нам надо. В моем случае это были страницы со специальными «отметками» о старом адресе. Подробностей не будет — по условиям контракта.
P.S. IMHO «без редиректа» — невежественная блажь 🙂
А можно пример хука. т.к. я пока что вижу только выход через ф-цию php header(….) но это тот же самый редирект
А можно пример хука.
Эээээ…. Короче, читать тут http://codex.wordpress.org/Plugin_API
Эээээ…. Короче, читать тут http://codex.wordpress.org/Plugin_API
ЭЭЭЭэ дык это то я найду. меня интересует как именно сделать реврайт если add_rewrite_ — не работает (см. пример выше). а php функция header(..) может делать только 301 редирект который в моих условиях неприемлем
Разве я что-то писал про rewrite? Я использовал другой принцип. Простите, но я не имею права детально расписывать реализованный у клиента алгоритм, а придумывать для Вас такой же, но другой чего-то не хочется.
Увы, по-простому не решается
Я слепой! Я прочитал как «клиент требует 301″.
1099511627776, сорри, был не прав. Клиент, кстати тоже 😉
IMHO «без редиректа» — невежественная блажь 🙂
Абсолютно согласен!
Тема «помогита разообраться с add_rewrite_rule» закрыта для новых ответов.