我正在尝试在 Nginx 上配置从文件夹到子域的重定向。我已经尝试过Nginx 重定向:文件夹到外部域和Nginx 重写规则(子目录到子域)和nginx:将子文件夹重定向到子域名. 什么都不起作用。
问题很简单。我有一个配置了以下行的 Apache:
RedirectPermanent /asdhttp://asd.domain.com/
现在,我尝试在 Nginx 上复制此内容。我尝试过的每个配置都存在同样的问题:
如果我去http://www.domain.com/asd/,他们把我重定向到http://asd.domain.com/asd/。
如果我去http://www.domain.com/asd/index,它们会重定向到http://asd.domain.com/index。
在所有情况下,我都需要删除子文件夹,对我来说,第一个是不正确的。在第一种情况下,我该如何配置 nginx,转到http://asd.domain.com/?
规则在 root 参数之后应用。配置如下:
server {
listen --
server_name --
root --
<> INSERT RULE HERE
access_log --
error_log --
include - (A file with php configurations).
}
一些已尝试规则的示例:
重写 ^/asd/(.*)http://asd.domain.com/1 美元永久;
重写 ^/asd(.*)http://asd.domain.com/1 美元永久;
重写 ^/asd(.*)http://asd.domain.com1 美元永久;
位置 ^~ /asd/ { 重写 ^/asd/(.*)http://asd.domain.com/$1 永久;}
位置 ^~ /asd/ { 重写 ^/asd(.*)http://asd.domain.com/$1 永久;}
位置 ^~ /asd/ { 重写 ^/asd(.*)http://asd.domain.com$1 永久;}
此外,位置变化为“位置 ~ ^/asd/(。)”或“位置~^/asd(.)”
谢谢,
答案1
我觉得你和rewrite ^/asd/(.*) http://asd.domain.com/$1 permanent;
根据文档:
如果替换字符串包含新的请求参数,则先前的请求参数将附加在其后。如果不希望出现这种情况,请在替换字符串末尾放置一个问号,以避免附加这些参数
但你可能需要添加一个?,只是为了练习结束$像这样:
rewrite ^/asd/(.*)$ http://asd.domain.com/$1? permanent;