1

いくつかの.htaccessチュートリアルを読みましたが、この簡単なタスクを理解できません。私は通常、すべてのリクエストをindex.phpにルーティングするサイトを持っています。しかし、index.phpに再ルーティングせずに単純に実行したい特定のファイル(upload_photo.php)が1つあります。以下は、すべてを台無しにするupload_photo.phpのエントリを含む私のhtacessファイルです。私は何が間違っているのですか?

# AddType x-mapp-php5 .php
# AddHandler x-mapp-php5 .php

RewriteEngine on
Options +FollowSymlinks
#Options +SymLinksIfOwnerMatch

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule upload_photo.php upload_photo.php [L]
RewriteRule . index.php [L]

ErrorDocument 404 /page-unavailable/

<files ~ "\.tpl$">
order deny,allow
allow from none
deny from all
</files>
4

2 に答える 2

4
RewriteRule upload_photo\.php - [L]

-「書き換えない」を意味しL、このルールが一致したときに他のルールが処理されないようにします。一般的な書き換えルールの前に置いてください。

あなたの場合、RewriteCondsは一度に1つだけに適用されるため、失敗しますRewriteRule

于 2012-12-06T15:48:30.023 に答える
1

あなたが持っていた元の書き直し:

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

このようなことをします:

構成:

RewriteEngine on
Options +FollowSymlinks

要求されたパスがファイルでない場合

RewriteCond %{REQUEST_FILENAME} !-f

要求されたパスがディレクトリでない場合

RewriteCond %{REQUEST_FILENAME} !-d

次に、index.phpに書き直します

RewriteRule . index.php [L]

したがって、ファイルupload_photo.phpが実際に同じディレクトリに存在する場合index.phpは、元の書き換えを変更する必要はありません。index.phpへの書き換えは、要求されたリソース(ファイルまたはディレクトリ)が存在しない場合にのみ実行されるため、正しいファイル.phpが自動的に参照されます。

したがって、これを追加する必要はありません。

RewriteRule upload_photo.php upload_photo.php [L]
于 2012-12-06T15:53:05.803 に答える