У меня есть сайт WordPress с постоянными ссылками, установленными на имя сообщения.
Используя перезапись Nginx, я пытаюсь выполнить внутреннюю переадресацию (без изменения URL-адреса браузера), но пока у меня ничего не получается.
Это работает, но URL меняется
расположение ~ ^/u/(.*) {
переписать ^/u/(.*) /p/?username=$1 redirect;
}
Я не понимаю, почему это не работает:
расположение ~ ^/u/(.*) {
# это возвращает 404
переписать ^/u/(.*) /p/?username=$1 последним;
}
Весь конфиг
сервер {
слушать 80;
слушать [::]:80;
имя_сервера пример.com;
корень /srv/www/html;
журнал_ошибок /var/log/nginx/error.log;
индекс index.php;
местоположение = /favicon.ico {
log_not_found выключен;
доступ_лог выключен;
}
местоположение = /robots.txt {
позволять все;
log_not_found выключен;
доступ_лог выключен;
}
расположение ~ ^/u/(.*) {
переписать ^/u/(.*) /p/?username=$1 последним;
# try_files $uri /p/?username=$1;
}
место расположения / {
try_files $uri $uri/ /index.php?$args;
}
расположение ~ \.php$ {
client_max_body_size 8M;
включить fastcgi-php.conf;
# Смягчить https://httpoxy.org/ уязвимости
fastcgi_param HTTP_PROXY "";
fastcgi_intercept_errors включен;
fastcgi_pass 0.0.0.0:9000;
}
расположение ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
истекает макс.;
log_not_found выключен;
}
}
Я пишу плагин для WordPress и хочу, чтобы пользователи вводили такие URL-адреса, как https://example.com/u/john71 и внутренне перенаправить на https://example.com/p/?username=john71
Обе ты и п являются страницами WordPress, и п содержит шорткод, который позволяет мне получить имя пользователя.
я мог бы иметь https://example.com/p/?username=john71, но что-то вроде: https://example.com/u/john71 выглядит лучше.
Любая помощь по правилу перезаписи или подходу приветствуется.