web-dev-qa-db-ja.com

Apache .htaccess <ここではディレクトリは許可されていません

XAMPPを実行していて、.htaccessがどのように機能するかを学習しようとしています。私は次のようなファイル構造を持っています:

/parent
    /foo
    /bar
    .htaccess

すべてのfooリクエストをbarに変更し、その後にGETパラメータを追加したいだけです。例えば:

foo/
foo/hello.php

に変わる:

bar/?test=yes
bar/hello.php?test=yes

<Directory>ディレクティブを.htaccessファイルに入れようとすると:

<Directory "/foo">
    Options +Indexes
</Directory>

次のエラーログが表示されます。

[2017年9月19日火曜日17:23:58.356362] [core:alert] [pid 6336:tid 1900] [client :: 1:60018] C:/xampp/htdocs/parent/.htaccess:<ディレクトリはここでは許可されていません

Httpd.confファイルを確認しましたが、すべて問題ありません。 .htaccessファイルの内容を単純に変更すると、次のようになります。

Options -Indexes

403エラーが正しく表示されます。 -+に置き換えると、ディレクトリリストが表示されます。

私は何が間違っているのですか?

4
dodov

<Directory>ディレクティブは.htaccessでは許可されておらず、要件を満たすために.htaccessではこれも必要ありません。

このルールはサイトルート(親)で使用できます.htaccess

RewriteEngine On

RewriteCond %{QUERY_STRING} !(?:^|&)test=yes(?:&|$) [NC]
RewriteRule ^foo/(.*)$ bar/$1?test=yes [NC,QSA,L]
3
anubhava

マニュアル によると、<Directory...htaccessでは許可されていません。サーバー構成と仮想ホストでのみ使用できます。代わりにmod_rewriteを使用する必要があります。

1
akond

簡単な答え:.htaccessファイルを削除するだけで、error.logの問題は解消されます。

より長い答え:

今日の初めに、C:\ xampp\Apache\logs\error.logファイルで同じメッセージを受け取り始めました。エラーは突然始まり(何年も問題なくローカルホストを使用した後)、ローカルホストを起動しようとしたときに「500サーバーエラー」と一致しました。

.htcaccessファイル(今日初めて/ Sitesディレクトリに表示された)の内容は次のとおりです。

<Directory>
  AllowOverride All
  Order allow,deny
</Directory>

同様の.htcaccessの質問に関連して他の人が指摘しているように、ファイルは通常必要ありません。

したがって、.htcaccessファイルを削除するだけで、問題はすぐに解決しました。すぐにローカルホストが再び機能し始め、エラーはログから消えました!

0
TechnoCat