0

ディレクトリ内のすべての実際のファイルを無視することは可能RewriteRulesですか? つまり、page.php が処理する「フラットリンク」または「パーマリンク」 (http://example.com/not/an/actual/file/path/) を作成しています。これは、他のすべてのファイルを「無視」した場合にのみ機能しますRewriteCondRewriteCond私の.htaccessファイルのディレクトリにあるすべての実際のファイルを作成する代わりに、実際のファイルがあるかどうかを確認し、そうでない場合はpage.phpに処理させる方法がありますか?

RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{REQUEST_URI} !^/somefile\.php$
RewriteCond %{REQUEST_URI} !^/someotherfile\.php$
RewriteCond %{REQUEST_URI} !^/page\.php$
RewriteRule ^([^/]*)$ /page.php?p=$1 [L] [NC]
4

2 に答える 2

1

はい、非常に可能です。既存のコードの前に次の行を追加します。

## If the request is for a valid directory
RewriteCond %{REQUEST_FILENAME} -d [OR]
## If the request is for a valid file
RewriteCond %{REQUEST_FILENAME} -f [OR]
## If the request is for a valid link
RewriteCond %{REQUEST_FILENAME} -l
## don't do anything
RewriteRule ^ - [L]
于 2012-10-31T20:40:21.603 に答える
1

以下は、要求されたファイル ( -f) またはフォルダー ( ) がディスク上に-d存在しない( ) 場合にのみ、リダイレクトを実行する必要があることを示しています。!

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /page.php?p=$1 [L,NC]
于 2012-10-31T20:43:48.170 に答える