这是我得到的情况。
我有一个使用了很多React的网站。 有几个HTML页面和内容被加载到HTML页面取决于所请求的URL(这几乎是一个单一的页面应用程序)。
为了更好的search引擎优化,我为每个这样的URL创build了替代的HTML页面(我知道谷歌机器人可以阅读像React这样的JavaScript页面,但其他search引擎不能)。 当search引擎机器人访问一个React页面时,它会看到这个标签<meta name="fragment" content="!" /> <meta name="fragment" content="!" /> ,然后将这个空参数_escaped_fragment_附加到请求的URL。 在看到附加参数后,nginx返回React页面的替代(prerendered)html页面。
例如,如果请求的URL是/some/nice/url那么机器人如果看到标签<meta name="fragment" content="!" /> <meta name="fragment" content="!" />它会将空参数附加到/some/nice/url?_escaped_fragment_=并被redirect到这个URL /some/nice/url?_escaped_fragment_=的替代html页面/some/nice/url?_escaped_fragment_= 。 如果没有添加空参数,则必须返回React页面(而不是替代html页面)。
所有的prerendered html文件都在文件系统上,并且与URL具有相同的名称,但是最后使用下划线+ .html而不是斜杠。 例如,如果URL是/some/nice/url则文件名称为some_nice_url.html 。 这是在URL的后面添加空参数/some/nice/url?_escaped_fragment_=时必须呈现的html文件。
我怎样才能写一个通用的规则来处理这个问题的nginx? generics我的意思是通用处理所有的URL。
它应该看起来像这样:
location "/some/nice/url" { # this should be some regex index some_nice_url.html; alias /path/to/templates/; # /path/to/templates is where prerendered html fires are stored if ($request_uri ...) { return 302 ... } }
有任何想法吗?