У меня есть этот экземпляр, где поиск html <form>
заставляет его идти к /search/index.php?q=термин
и хотел бы использовать что-то вроде /искать термин
вместо.
Вот так сейчас выглядит конфиг:
местоположение /поиск/ {
переписать ^/search/(.+) /search/index.php?q=$1;
}
Прямой доступ к этому местоположению работает, но в момент заполнения формы и поиска в ней будет использоваться «происхождение», а не перезапись.
Я попытался использовать перенаправление «назад», но это привело к сбою службы nginx:
местоположение /поиск/ {
переписать ^/search/(.+) /search/index.php?q=$1;
перенаправить ^/search/index.php?q=(.+) /search/$1;
}
Я также пытался переписать с помощью постоянный
флаг, который ничего не делал
местоположение /поиск/ {
переписать ^/search/(.+) /search/index.php?q=$1;
переписать ^/search/index.php?q=(.+) /search/$1 навсегда;
}
Я знаю, что в PHP можно добиться того же, что-то вроде этого:
// В верхней части /search/index.php
если (str_starts_with($_SERVER['REQUEST_URI'], '/search/index.php')){
$протокол = ($_SERVER['HTTP_X_FORWARDED_PROTO'] == "https")? «https» : «http»;
$сервер = $_SERVER['HTTP_HOST'];
$запросы = массив();
parse_str($_SERVER['QUERY_STRING'], $запросы);
$search = $queries['q'] ?? "";
header("Расположение: $protocol://$server/search/$search");
}
Но думаю, было бы лучше, если бы nginx мог с этим справиться (если это вообще возможно).
Кто-нибудь знает, как переписать и перенаправить доступ из источника?