我正在使用 grunt-html-snapshot 创建我的 Angular webapp 的静态快照。该站点由使用以下层次结构的 CMS 驱动
/ (page)
/somecateogry (page)
/somecategory/somepage (page)
/somecategory/anotherpage (page)
问题是 grunt 将页面快照存储在带有下划线的类别中,例如snapshot____somecategory_somepage.html。
使用提供的重写规则,我可以访问类别页面的快照:domain.com/?_escaped_fragment_=/category。这被重写为/snapshots/snapshot____category.html。
但是,我遇到问题的子页面被重写为/snapshots/snapshot____category/subpage.html。
老实说,我没有真正的使用 mod_rewrite 的经验(我已经到了现在的位置,很大程度上要感谢这篇文章),所以我觉得列出我尝试过的东西有点徒劳。但是,我希望我的想法是正确的,我需要以某种方式获取 QueryString,然后将所有斜杠 (/) 重写为下划线。我也有点担心如果我添加子类别会发生什么,但这目前并不重要。
<VirtualHost *:80>
DocumentRoot "/var/node-www/hornet"
# Snapshot directory (Crawling directory)
RewriteLog "/var/node-www/hornet/rw-log"
RewriteLoglevel 4
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/$
RewriteCond %{QUERY_STRING} ^_escaped_fragment_=/?(.*)$
RewriteRule ^(.*)$ /snapshots/snapshot____%1.html? [NC,L]
ProxyPreserveHost On
ProxyRequests Off
ServerName local.hornet
ServerAlias local.hornet
# Send to Tomcat
ProxyPass /rest/ http://localhost:8080/Hornet/rest/
ProxyPassReverse /rest/ http://localhost:8080/Hornet/rest/
# Send to Node
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>