У меня есть пользовательская страница:
website.com/show/?id=9999&n=show-name
/show/
является страницей WordPress с положением 540. Я добавил правило перезаписи для преобразования URL-адреса:
website.com/show/9999/show-name/
Вот код, который я использую в functions.php
моей темы для перезаписи:
add_action( 'init', 'init_custom_rewrite' ); function init_custom_rewrite() { add_rewrite_rule( '^show/([^/]*)/([^/]*)/?', 'index.php?page_id=540&id=$matches[1]&n=$matches[2]', 'top' ); } add_filter('query_vars', 'my_query_vars', 10, 1); function my_query_vars($vars) { $vars[] = 'id'; $vars[] = 'n'; return $vars; }
Теперь URL website.com/show/9999/show-name/
работает правильно.
Однако теперь мне нужно убедиться, что если кто-то попытается получить доступ к странице, используя старый URL-адрес:
website.com/show/?id=9999&n=show-name
… что они будут перенаправлены на новый URL-адрес дружественного SEO:
website.com/show/9999/show-name
Как настроить перенаправление?
Я понял. Я ввел эти правила перезаписи в .htaccess:
RewriteCond %{QUERY_STRING} ^id=([^/]*)&n=([^/]*)$ RewriteRule ^show/?$ /show\/%1\/%2\/? [R=301,L]