我有一些ProcessWire的緩存插件的問題,但也許這是一個關於Apache .htaccess限制的更全局的問題。htaccess「如果文件存在」和「mod_rewrite -f」不起作用
例子:
我打電話給我的頁面是這樣的:http://example.com/foo 的的.htaccess應該查找是否有文件DOCUMENT_ROOT/cache/foo/index.html
如果該文件存在,則顯示文件,或者 - 簡化了這個例子 - 只需撥打一個成功頁面
示例文件結構:
cache/foo/index.html (some dummy content)
bar (some dummy content)
file-found.php (the success page with some print_r($_SERVER) stuff)
.htaccess with this content:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/cache/$1/index.html -f
RewriteRule ^(.*) file-found.php
</IfModule>
這正常工作m上y本地計算機([SERVER_SOFTWARE] => Apache/2.4.18(Unix)) 但是我不想使用託管軟件包。 ([SERVER_SOFTWARE] => Apache/2.2.31(Unix))服務器的反應只是一個404:「在此服務器上找不到請求的URL/foo。」
由於apache的版本還是受到主機的限制,它不工作嗎?
Btw。 ModRewrite基本上適用於這個託管。例如是這樣的:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) file-found.php
</IfModule>
如果我打電話http://example.com/bar,文件found.php示
任何想法如何替換地解決這個「如果文件存在=>然後」在htaccess的規則?
感謝您的幫助!
編輯:更簡單:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/bar -f
RewriteRule ^(.*) file-found.php
</IfModule>
工作的地方,但不能在主機供應商
什麼是'%{DOCUMENT_ROOT}'的現場服務器上的價值?是否存在「%{DOCUMENT_ROOT}/cache/$ 1/index.html」? – anubhava