Facebook graph api Nginx:在url重写中转义

Facebook graph api Nginx:在url重写中转义,facebook-graph-api,nginx,Facebook Graph Api,Nginx,我有一个MVC JavaScript应用程序需要支持Facebook共享,这意味着它需要支持独特的OG meta HTML标记 我正在做一个Nginx重写,它将检测到Facebook爬虫服务器上的一个自定义版本的应用程序,该应用程序带有适当的OG标记,但Apache会忽略#符号后的所有内容(服务器端应该这样做,因为这是一个浏览器功能)。我想在重写中避开“#”,但不确定如何在Nginx中执行此操作: location / { if ($http_user_agent ~* 'facebooke

我有一个MVC JavaScript应用程序需要支持Facebook共享,这意味着它需要支持独特的OG meta HTML标记

我正在做一个Nginx重写,它将检测到Facebook爬虫服务器上的一个自定义版本的应用程序,该应用程序带有适当的OG标记,但Apache会忽略#符号后的所有内容(服务器端应该这样做,因为这是一个浏览器功能)。我想在重写中避开“#”,但不确定如何在Nginx中执行此操作:

location / {
  if ($http_user_agent ~* 'facebookexternalhit') {
    rewrite ^(.*)$ /og.php?url=http://$host$uri;
    proxy_pass http://127.0.0.1:8080;
    break;
  }
  root /var/www/html/site.net;
}

谢谢你看

你不能也不必。如果您的浏览器中有类似
http://www.example.tld/site.html#anchor
那么浏览器的请求将只包含非锚定部分:
http://www.example.tld/site.html
。收到内容后,浏览器将查找名为
anchor
的命名锚,并滚动页面,使其内容可见

这意味着nginx将永远看不到字符
#


另一方面,如果一个网站包含一个链接,
#
是URL路径部分的一部分(这种情况非常罕见)然后必须使用通常的URL转义进行转义,即
%xx
,其中
xx
是该字符的十六进制数--
%23
,在
的情况下,Moritz:I正在成功地代理传递到Apache,如上所述:
rewrite^(.*$/og.php?URL=http://$host$uri,工作正常(包括哈希字符)。我不明白Nginx或Apache是否看到了散列,但它被正确地重写了,我只需要以下内容:
rewrite^(.*)$/og.php?url=escape(http://$host$uri)当然,您是对的,如果将URL转换为GET参数,则必须对其进行转义。没想到。你的问题是关于#的,我的答案仍然适用。是的,但我的问题是,就我所知,上面的转义词在Nginx中不存在。伙计们,我需要这个重写规则来工作
rewrite^/ref/(*)$/%23/home/$1I类型:I获取:无法获取/%2523/home/xyz