-1

特定のファイルのみを読み取るように .htaccess ファイルを構成する方法はありますか? index.php だけと言って、他のものとは言いませんか?

編集: index.php が読み込まれるデフォルトのファイルであることはわかっています。私はこのようなものが欲しい:

ユーザーが www.example.com と入力すると、デフォルトで index.php が読み込まれます。www.example.com/index2.php と入力すると、index2.php が読み込まれるはずです。

私が望むのは、URLが何であれ、どこにでも404エラーページを表示することではありません. 読み取られるはずのファイルは2つだけです。

4

2 に答える 2

3

Zend Frameworkは、要求されたファイルが実際に存在しない限り、すべての要求をindex.phpにルーティングするデフォルトの.htaccessを提供します。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

あなたはそれをより制限的にして、すべてをindex.phpにルーティングするかもしれません:

RewriteEngine On
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

これにより、たとえばCSSファイルへの追加のリクエストが不可能になることに注意してください。

[編集]

Drupalが提供する.htaccessを見てみるのもいいでしょう。そこでは、特定のパスとファイルタイプもブロックされます。Drupalの.htaccessの最初のディレクティブは次のとおりです。

<FilesMatch "\.(engine|inc|info|install|make|module|profile|test|po|sh|.*sql|theme|tpl(\.php)?|xtmpl)$|^(\..*|Entries.*|Repository|Root|Tag|Template)$">
    Order allow,deny
</FilesMatch>

したがって、phpファイルとapplicationディレクトリ内のすべてへのアクセスのみをブロックしたい場合は、おそらく次のようにします。

<FilesMatch "(\.php$|^application)">
    Order allow,deny
</FilesMatch>

(私はhtaccessの専門家ではなく、コードが頭から離れているため、テストされていません。修正が必要な場合は、コメントにコメントを投稿するか、コードを直接編集してください)。

于 2012-06-19T10:01:42.960 に答える
0

実際にやろうとしていることについてあまり情報を提供していません。特定のファイルに対してのみ認証を要求する場合は、次のようなものを使用できます。

<Files "index.php">
require valid-user
</Files>

残念ながら、これ以上の情報がなければ、他の提案をすることはできません。

于 2012-06-19T09:56:58.767 に答える