在我的许多站点上,都有通过内部目录进行重定向的传统。它看起来使得从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文件中。
请帮助我进行配置,我无法弄清楚。(
部分问题是,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
。