2017-10-06 80 views
1

例如是否可以用nginx中的片段重写一个URL?

重写^/page /#页面;

由于片段的性质(从未发送到服务器等),我不确定这是否可能。但是由于我正在改写TO而不是FROM,我认为它应该起作用?

在这种情况下,我如何编码/转义该散列符号,以便它不会开始评论..?

谢谢!

+0

它需要一个外部* *重定向 - 所以'redirect'或'permanent'后缀添加到'rewrite'声明。 –

+0

你能否在这种情况下解释“外部”的含义?我如何编码哈希/磅符号? – Codemonkey

回答

1

如您所知,片段被浏览器使用并且不会发送到服务器。

但是,您可以使用nginx将请求重写为包含片段的新URI,但只有在将新URI发送到浏览器时才有意义,即使用HTTP 3xx响应。

redirect(302)或permanent被提供(301)标志( - 见this document更多或替换字符串与一方案开始)的rewrite指令将产生一个HTTP 3xx应答。

例如:

rewrite ^/page /#page redirect; 
+0

太好了,谢谢。尽管如何避免#开始评论? – Codemonkey

+0

噢好吧,事实证明这不是我必须担心的事情! – Codemonkey