Как в WP сделать ЧПУ на свой файл?

Ссылка скопирована
1 ответ

В корне сайта на 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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Сделать ЧПУ на отдельный файл в корне WordPress можно, но правило должно стоять до стандартного блока WordPress в .htaccess. Иначе запрос перехватит WordPress и отдаст 404.

Если у Вас есть файл go.php?link=56, а нужен URL /link56/, пример правила:

RewriteEngine On
 
RewriteRule ^link([0-9]+)/?$ go.php?link=$1 [L,QSA]

RewriteEngine On RewriteRule ^link([0-9]+)/?$ go.php?link=$1 [L,QSA]

Это правило нужно добавить выше блока:

# BEGIN WordPress
...
# END WordPress

# 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');
});

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, очистите его после проверки, иначе часть запросов может идти по старой логике.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно