我在发布之前试图环顾四周,但我无法为我的问题找到解决方案。
我曾经在http://example.com/blog这样的域中托管博客,并将其移至根/
我想做的是在NGINX中编写规则,告诉我重定向旧文章: http://example.com/blog/my-dope-article 至 http://example.com/my-dope-article
有没有这样做? 谢谢!
我试过这个: 重写^ / blog /(.*)http:// $ server_name / $ 1 permanent; 但它不起作用,因为http://example.com/blog/my-dope-article仍然被重写为http://example.com/blog/my-dope-article我要删除的地方#34; / blog"部分来自新网址.. :(
答案 0 :(得分:0)
您是否使用curl或其他工具查看重定向以检查究竟发生了什么? 如果您正在/而不是/ blog /现在运行wordpress但尚未更改home-和siteurl-options,WP将创建一个重定向到它认为正在运行的URL。
当您查看标题(例如使用curl -I http://example.com/
或使用浏览器中的开发人员工具)时,您通常会发现由nginx引起的重定向与由nginx背后的任何内容引起的重定向之间的差异。
例如,nginx本身的重定向可能如下所示:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 03 Oct 2017 18:37:06 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: https://www.example.org/
虽然来自nginx后面的apache / php / WP的重定向可能看起来像这样
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 03 Oct 2017 18:39:44 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: https://www.example.org/
Vary: Accept-Encoding
Content-Length: 339
注意移动的Content-Length标头,添加了Vary标头和不同的Content-Type。
当然,您也可以通过重定向查看他们发送的正文(例如curl -v https://www.example.org/
)。
nginx的示例:
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
阿帕奇/ WP
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="https://www.example.org/">here</a>.</p>
<hr>
<address>Apache/2.2.16 (Debian) Server at example.org Port 80</address>
</body></html>
答案 1 :(得分:0)
是的,我试过CURL看看发生了什么。最后,我发现了我做错了什么:这是语法..
所以我只是说:重写^ / blog(。*)/ $ 1 last;在我的nginx conf文件中的server指令和voilà