如何从目录重定向到外部站点(从该站点的URL)

问题描述 投票:1回答:1

在我的许多站点上,都有通过内部目录进行重定向的传统。它看起来使得从site.ru到Yandex的外部链接看起来像这样:

https://site.ru/out/https://ya.ru

此网址将301重定向到https://ya.ru

在apache中,我在.htaccess中执行此操作:

RedirectMatch 301 /out/(.*)$ 1.

尝试为nginx重写,这样做:

rewrite /out/(.*) $1 permanent;

但是它重定向到https://site.ru/ya.ru,而不是https://ya.ru

我将此配置添加到my.conf(我在/ etc / nginx中创建了此文件),然后执行«include /etc/nginx/my.conf;» (当然在服务器{}中)在我站点的所有conf文件中。

请帮助我进行配置,我无法弄清楚。(

nginx url redirect nginx-config
1个回答
0
投票

部分问题是,rewrite使用标准化的URI,该URI已将多个连续的/折叠成单个/。最好使用存储在$request_uri中的原始请求。

一种可能的解决方案是使用map提取嵌入的URL。例如:

map $request_uri $redirect {
    default 0;
    ~^/out/(?<out>.*)$ $out;
}

server {
    ...
    if ($redirect) { return 301 $redirect; }
    ...
}

有关详细信息,请参见this document,有关this caution的使用,请参见if

© www.soinside.com 2019 - 2024. All rights reserved.