我正在基于整个网址进行一些缓存,包括查询字符串,并且需要Apache识别文件并使用它。它似乎找到一个匹配,但然后在渲染文件之前关闭查询字符串。
url:www.somesite.com/default.asp?foo = bar
缓存文件夹中文件系统上的缓存页面文件名:default.asp?foo = bar
我目前尝试重写:
RewriteCond /site_root/cache/%{REQUEST_FILENAME}?%{QUERY_STRING} -f
RewriteRule ^.*$ /site_root/cache/%{REQUEST_FILENAME}?%{QUERY_STRING} [L,QSA]
答案 0 :(得分:2)
你可能想尝试这样的事情:
RewriteRule ^(.+)$ /site_root/cache/$1 [L,QSA]
这应该将URL中的“default.asp”重写为您正在尝试使用的思考。 QSA应该将原始查询字符串附加到重写的URL。
我不是100%确定这是你正在寻找的,所以如果它不让我知道,我会尽力帮助。
答案 1 :(得分:1)
我找到了一个适合我需要的解决方案。
似乎Apache真的想把查询字符串拉成一组参数,这是正常的。
为了在Apache上拉一个我刚刚更换了?在带有|的字符串中。一旦我这样做,它就不再将字符串视为查询字符串了。因为params与我的情况无关,所以它工作正常。我所要做的就是确保用管道而不是问号写出文件名。很容易。
如果您有更好的解决方案,请随时发表评论。
这是为我做的规则。由于Apache不会将结果识别为它知道的MIME,因此我将其强制为text / html。
RewriteRule ^(.+)$ /site_root/cache/%{HTTP_HOST}$1|%{QUERY_STRING} [L,T=text/html]