我在服务器配置期间遇到了一个问题:我需要从http://www.example.com到http://example.com的301重定向,只需要一个特定的网址别名 - 比如/ partners。
预期输出-http://www.example.com/partners/stuff - > http:// example.com/partners/stuff。
我已经尝试将以下代码添加到vhosts中:
server {
server_name http://www.example.com/partners;
return 301 $scheme://example.com/partners;
}
但是vhosts给我一个错误,告诉我这段代码无效 实现这种重写的正确方法是什么?
答案 0 :(得分:1)
server_name仅适用于域。我可以建议你2个解决方案。
在服务器之间复制配置。这是nginx作者推荐的最佳解决方案。
server {
server_name example.com;
include example.com.conf;
}
server {
server_name www.example.com;
include example.com.conf;
location /partners/ {
return 301 $scheme://example.com$request_uri;
}
}
或使用if。性能不佳的解决方案
server {
server_name .example.com;
...
location /partners/ {
if ($host = "www.example.com") {
return 301 $scheme://example.com$request_uri;
}
}
}