mod_rewrite:在querystring中替换字符?

时间:2013-10-02 11:53:38

标签: apache mod-rewrite gruntjs

我正在使用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的真实经验(我已经到了我现在的位置,主要归功于这个article),所以我觉得列出我试图有点徒劳的东西。但是,我希望我认为我不知何故需要获取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>

0 个答案:

没有答案