0
我想阿帕奇渲染%{DOCUMENT_ROOT} /cache/%1.html如何重寫只(如果它存在的.htaccess)
如果%1請求路徑靜態文件。我的整個網站位於一個名爲cache_test的子目錄中,並且具有以下.htaccess文件。但在7號線和11重寫規則將不匹配:(。
感謝您提前預支! 親切的問候, 尼克拉斯
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]
感謝您的回覆Wrikken! 我試圖使用相對路徑,因爲你指出它並沒有工作。關於「^ $ index.html [QSA]」 - 我不確定。我必須承認,mod_rewrite遠沒有我強烈的一面。第13到17行都是讓Apache將所有內容路由到rails(通過fcgi)。 關於將文件從RewriteBase轉換成文件後,文件的外觀如何? 謝謝,並提前坦克你。 親切的問候, 尼克拉斯 – 2010-06-07 07:11:43
如果你不添加一個rewritebase(http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritebase),你的大部分模式需要匹配cache_test前面的路徑(^ /?cache_test /) – Wrikken 2010-06-07 09:00:54