私はProcessWire用のCache Pluginにいくつか問題がありますが、これは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>
: - ちょうど
例のファイル構造成功ページを呼び出しますyローカルマシン([SERVER_SOFTWARE] => Apache/2.4.18(Unix)) しかし、私が使いたいホスティングパッケージではありません。 ([SERVER_SOFTWARE] => Apache/2.2.31(Unix))サーバの反応はちょうど404です: "要求されたURL/fooはこのサーバ上に見つかりませんでした。
Apacheのバージョンのために動作しないのですか、またはホスティング業者によって制限されていますか?
Btw。 ModRewriteは基本的にこのホスティングで動作します。たとえば、次のように:私はhttp://example.com/barを呼び出す場合
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*) file-found.php
</IfModule>
、ファイルfound.phpはhtaccessファイル内のルール「ファイルは=>その後、存在する場合は、」代わりにこれを解決する方法
任意のアイデアが示されていますか?
ありがとうございました!
EDIT:さらに多くの簡略化:
<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