Nginx:将类似wordpress的URL从子目录重定向到root保持URL

时间:2017-10-03 16:32:27

标签: wordpress redirect nginx url-rewriting

我在发布之前试图环顾四周,但我无法为我的问题找到解决方案。

我曾经在http://example.com/blog这样的域中托管博客,并将其移至根/

我想做的是在NGINX中编写规则,告诉我重定向旧文章: http://example.com/blog/my-dope-articlehttp://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"部分来自新网址.. :(

2 个答案:

答案 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à