web-dev-qa-db-ja.com

.htaccess書き換えモジュールがWindowsのApacheで機能しない

Apacheサーバーのルートディレクトリにある単一のファイルindex.pyにバックアップするフォルダーにリクエストをリダイレクトしようとしています。これまでのところ、何も機能していません。これが私の.htaccessです:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{HTTP_REFERER} !index\.py
RewriteRule . index.py [L]
</IfModule>

これでも、www.example.com/files/testfile.ZipのようなURLをフィードしてダウンロードすることができます。 index.pyに戻る必要があります。 mod_rewrite.cohttpd.conf行のコメントを解除しました。これはWindowsにあります。

2
iscariot TF

これでも、www.example.com/files/testfile.ZipのようなURLをフィードしてダウンロードすることができます。

投稿したディレクティブは、ファイルシステム上の既存のファイルにマップするURLを明示的に除外します。そうです、/files/testfile.Zip(物理ファイル)にアクセスしてダウンロードすることが許可されます。 (具体的には、RewriteRuleは存在しないファイルにのみ適用されます。)

ただし、投稿したディレクティブには、これが正しく機能していないことを示唆する他の問題があります...この.htaccessファイルはどこにありますか?

この.htaccessファイルがドキュメントルートにある場合、サブディレクトリ内のファイルのリクエストだけでなく、すべてのリクエストに一致します。

.htaccessファイルがサブディレクトリにある場合、書き換えが成功すると、ドキュメントルートではなく、そのサブディレクトリのindex.pyに書き換えられます。

内部的に書き換えるall特定のサブディレクトリのリクエストをドキュメントルートのindex.pyに送信し、次の手順を試してください。そのサブディレクトリ内の.htaccessファイル:

RewriteEngine On
RewriteRule ^ /index.py [L]

PDATE: .htaccessファイルがまだ有効になっていない場合は、有効にする必要があります... AllowOverride Allをサーバー構成に含める必要があります(Allは次のように置き換えることができます) FileInfo後ですべて)が必要ない場合。 Options +FollowSymLinksは、サーバー構成の<Directory>セクション、または.htaccessファイル自体のいずれかに配置する必要があります。

1
MrWhite