リダイレクトが(RewriteCondではなく)RewriteRuleに依存している理由がわかりません。
私の.htaccess:
Options +FollowSymLinks +SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ false.txt
</IfModule>
ルートフォルダには次のものが含まれます。
true.txt(「true」を含む)
false.txt(「false」を含む)
test.txt(「test」を含む)
私が開こうとするとtest.txt
私は得ますtrue
、そして私が開こうとするとnonexist.txt
私も得true
ます。
今、私は私の.htaccessを変更します:
...
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ $1
...
そして今、私が開こうとするとtest.txt
私は得ます、そして私が開こtest
うとするとnonexist.txt
私は得false
ます。
更新:回答をありがとう、私はそれがどのように機能するかを理解しましたが、1つの問題がまだ存在します。別のディレクトリに「ファイルが存在するかどうか」を確認しようとすると、常に。が返されますfalse
。
/files/test.txt
/script/.htaccess
/script/false.txt
/script/true.txt
今私の.htaccessは次のようになります
RewriteCond %{REQUEST_FILENAME} .*(true|false).*$
RewriteRule .* - [S=2]
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ true.txt [L]
RewriteCond %{DOCUMENT_ROOT}/files/%{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ false.txt [L]
私はいつも得るfalse
。私も試しRewriteCond ../files/%{REQUEST_FILENAME}
てみましたが、常にfalse
結果が出ています。
フォルダに移動test.txt
して変更すると、すべて正常に機能します。script
RewriteCond %{REQUEST_FILENAME}