如何仅在存在时重写为静态文件(.htaccess)

时间:2010-06-04 14:35:13

标签: .htaccess

我想要apache来渲染%{DOCUMENT_ROOT} /cache/%1.html

如果%1是请求路径。我的整个站点位于一个名为cache_test的子目录中,我有以下.htaccess文件。但是第7行和第11行的RewriteRule将不匹配:(。

提前感谢您的任何进展! 亲切的问候, 尼克拉斯

 1 RewriteEngine   On
 2 RewriteBase     /cache_test/
 3
 4 RewriteCond     %{THE_REQUEST} ^(GET|HEAD)
 5 RewriteCond     %{REQUEST_URI} ^/([^.]+)$
 6 RewriteCond     %{DOCUMENT_ROOT}/cache/%1.html -f
 7 RewriteRule     ^/[^.]+$ /cache/%1.html [QSA,L]
 8
 9 RewriteCond     %{THE_REQUEST} ^(GET|HEAD)
10 RewriteCond     %{DOCUMENT_ROOT}/cache/index.html -f
11 RewriteRule     ^/$ /cache/index.html [QSA,L]
12
13 RewriteRule     (.*/cache_test)$ $1/
14 RewriteRule     ^$ index.html [QSA]
15 RewriteRule     ^([^.]+)$ $1.html [QSA]
16 RewriteCond     %{REQUEST_FILENAME} !-f 
17 RewriteRule     ^(.*)$ dispatch.fcgi [QSA,L]

1 个答案:

答案 0 :(得分:0)

RewriteBase + DOCUMENT_ROOT ==>麻烦...

我现在无法进行测试,你可能想检查一下这是否有效,改变:

6 RewriteCond     %{DOCUMENT_ROOT}/cache/%1.html -f

要:

6 RewriteCond     ../cache/%1.html -f

如果没有,我认为别无其他选择,只能忘记RewriteBase& amp;放弃那个。

另外,你为什么需要这个?

RewriteRule     ^$ index.html [QSA]