Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 如何从目录(从该站点的url)重定向到外部站点_Nginx_Url_Redirect_Nginx Config - Fatal编程技术网

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

Nginx 如何从目录(从该站点的url)重定向到外部站点,nginx,url,redirect,nginx-config,Nginx,Url,Redirect,Nginx Config,在我的许多网站上,有通过内部目录进行重定向的传统。看起来,从site.ru到Yandex的外部链接如下所示: 此url将重定向到301 在apache中,我在.htaccess中执行此操作: RedirectMatch 301 /out/(.*)$ 1. 尝试为nginx重写,请执行以下操作: rewrite /out/(.*) $1 permanent; 但它将重定向到,而不是 我将此配置添加到my.conf(我在/etc/nginx中创建了此文件)并包含/etc/nginx/my.co

在我的许多网站上,有通过内部目录进行重定向的传统。看起来,从site.ru到Yandex的外部链接如下所示:

此url将重定向到301

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

RedirectMatch 301 /out/(.*)$ 1.
尝试为nginx重写,请执行以下操作:

rewrite /out/(.*) $1 permanent;
但它将重定向到,而不是

我将此配置添加到my.conf(我在/etc/nginx中创建了此文件)并包含/etc/nginx/my.conf;»(当然是在服务器{}中)在我的站点的所有conf文件中


请帮我配置一下,我搞不清楚。(

部分问题是
重写
使用了一个标准化URI,它将多个连续的
/
折叠成一个
/
。最好使用存储在
$request\u URI
中的原始请求

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

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

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

我想这样做只是包括我的.conf文件的网站配置。如果我没有找到其他解决方案,我会尝试你的。
if ($request_uri ~ ^/out/(.*)$) { return 301 $1; }