4

php と .htaccess を使用して URL ハンドラーを作成しようとしていますが、URL に入力されたファイル\ディレクトリが存在しない場合にのみ書き換え条件を使用する方法がわからないという問題があります。

4

4 に答える 4

13

RewriteCondこのリソースをご覧ください。

RewriteCond %{REQUEST_FILENAME} !-f
//                                ^ this means file.
RewriteCond %{REQUEST_FILENAME} !-d
//                              ^ this means NOT, "d" means directory.
// Your rewrite rule here.
于 2012-07-25T09:50:08.110 に答える
4

これは、シェル スクリプトの -d および -f 関数と非常によく似ています。

そのようなことを試してください:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule XXX
于 2012-07-25T09:50:07.060 に答える
2

これでうまくいくはずです( を置き換えてください<filename>):

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l

RewriteRule .* <filename> [L]

ファイル、ディレクトリ、またはリンクが存在しない場合、リダイレクトを行います。

于 2012-07-25T09:51:12.240 に答える
2

'-d' (ディレクトリ) TestString をパス名として扱い、それが存在するかどうかをテストし、ディレクトリであるかどうかをテストします。

'-f' (通常のファイルです) TestString をパス名として扱い、それが存在するかどうかをテストし、通常のファイルです。

感嘆符 ('!') を先頭に付けて、意味を否定します。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
于 2012-07-25T09:50:29.013 に答える