Как в WP сделать ЧПУ на свой файл?
В корне сайта на WP есть файл go.php, который открывается с одним параметром цифрой, например
/go.php?link=56 и никак не связан с WP
Как для него сделать ЧПУ, чтобы путь был /link56/ ?
Правило RewriteRule ^link([0-9]*)/$ /go.php?link=$1 работает, но без правил WP, они ему мешают.
Дополнительно:
Добавить правилу флаг [L].
Само правило ставить в начало файла .htaccess чтобы оно было выше правил WP.
RewriteEngine on RewriteRule ^link([0-9]*)/$ /go.php?link=$1 [L] # BEGIN WordPress |
RewriteEngine on RewriteRule ^link([0-9]*)/$ /go.php?link=$1 [L] # BEGIN WordPress
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Сделать ЧПУ на отдельный файл в корне WordPress можно, но правило должно стоять до стандартного блока WordPress в
.htaccess. Иначе запрос перехватит WordPress и отдаст 404.Если у Вас есть файл
go.php?link=56, а нужен URL/link56/, пример правила:RewriteEngine On RewriteRule ^link([0-9]+)/?$ go.php?link=$1 [L,QSA]
Это правило нужно добавить выше блока:
# BEGIN WordPress ... # END WordPress
После этого запрос
/link56/попадёт вgo.phpс параметромlink=56. ФлагQSAсохранит дополнительные query-параметры, если они есть.Если таких ссылок много и они являются частью сайта, лучше не выводить отдельный PHP-файл, а зарегистрировать rewrite rule внутри WordPress:
add_action('init', function () { add_rewrite_rule('^link([0-9]+)/?$', 'index.php?my_link_id=$matches[1]', 'top'); });
Тогда нужно добавить query var и обработчик шаблона. Этот способ лучше, если нужна авторизация, статистика, SEO-логика или интеграция с WordPress.
Если же
go.phpпросто делает редирект, следите за безопасностью: проверяйте, что ID существует, не принимайте произвольный внешний URL из GET и ставьте правильный код редиректа.После изменения
.htaccessпроверьте не только новый URL, но и обычные страницы WordPress, админку, медиафайлы и REST API. Ошибка в rewrite-правиле может незаметно перехватить лишние адреса. Если используете кэш или CDN, очистите его после проверки, иначе часть запросов может идти по старой логике.