0

そのため、Apache のデフォルトのディレクトリ リストは最悪で、mod_autoindex のカスタマイズ オプションも最悪なので、サーバー ルートにいくつかの書き換えルールを記述して、すべてのリクエストをディレクトリにリダイレクトできると考えました。

<IfModule rewrite_module>
    RewriteEngine on
    RewriteCond %{REQUEST_URI} -d
    RewriteRule .* /index.php?dir=$0
</IfModule>

現在、これは少なくとも少しは機能するという印象を受けます。オフにしindexesてもまだアクセス可能のままlocalhostなので (index.php が表示されます)、サブディレクトリには到達しないようです (indexesオプションがオンの場合、Apache のディレクトリ インデックスに戻ります)。 、または403オフの場合は a を与えます)。

私の質問は、このルールをグローバルに適用することはできますか、それともきれいなディレクトリ インデックスの探求は失敗する運命にあるのでしょうか?

編集:注意してください:上記のルールは.htaccessサーバールートの a に含まれています。

編集:理想的には、ソリューションが存在する場合、ソリューションにはまだDirectoryIndex機能があります(つまり、index.php存在する場合は表示されます)、

4

1 に答える 1

2

ディレクトリ テストは、-d絶対ファイル システム パスでのみ機能します。そのため、絶対ファイル システム パスを提供するか (たとえば、を使用して%{DOCUMENT_ROOT}%{REQUEST_URI}、または%{REQUEST_FILENAME}直接) -D、追加のサブリクエストを作成して URI パスをファイル システム パスに解決します。私は好むだろう:

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* /index.php?dir=$0
于 2011-02-08T17:58:21.820 に答える