Поддержка Проблемы и решения Как изменить вид URL через mod_rewrite?

  • Здравствуйте! Переношу старый сайт с самописного движка на CMS WordPress и столкнулся с такой проблемой, что на старом сайте все урлы имеют такой вид:
    https://site.ru/view_page.php?page_id=92
    На новом сайте мне очень важно сохранить такие же урлы, делать 301-ые редиректы на новые адреса очень нежелательно, так как на эти страницы еще есть и внешние ссылки.
    В настройках постоянных ссылок в WordPress делал так:
    view_page.php?page_id=%post_id%
    Но это не работает, получаю 404-ые страницы.
    Пожалуйста, подскажите, как правильно через mod_rewrite в htacces прописать такое изменение URL?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • add_filter( 'request', 'my_request' );
    function my_request( $query_vars ){
    
    	if( !empty($_GET['page_id']) ){
    		$query_vars['page'] = '';
    		$query_vars['name'] = get_post($_GET['page_id'])->post_name;
    	}
    
    	return $query_vars;
    }

    Но проблема в том, как вы перенесете записи сохранением их ид? база данных будет создавать их совсем другие.

    @qwert555 об этом я не подумал, и правда.
    А если сделать так, если в URL записи буду писать id старой записи:
    /view_page.php?page_id=%postname%
    То как изменится Ваш код?

    Вам можно старый адрес записи записывать в произвольное поле.
    Для этого есть плагин https://ru.wordpress.org/plugins/custom-permalinks/

    @qwert555 благодарю, Ваш код работает. Плагин тоже установил, но он кодирует спецсимволы, поэтому вместо нужного:
    https://site.ru/view_page.php?page_id=32
    я получаю такие URL:
    https://site.ru/view_page.php%3Fpage_id%3D32
    В поддержке плагина ничего не нашел.
    Я понимаю, что выгляжу назойливым, Вы мне и так уже очень помогли, но может знаете как исправить и эту проблему?

Просмотр 4 ответов — с 1 по 4 (всего 4)
  • Тема «Как изменить вид URL через mod_rewrite?» закрыта для новых ответов.