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エラーが正しく表示されます。 -
を+
に置き換えると、ディレクトリリストが表示されます。
<Directory>
ディレクティブは.htaccessでは許可されておらず、要件を満たすために.htaccessではこれも必要ありません。
このルールはサイトルート(親)で使用できます.htaccess
:
RewriteEngine On
RewriteCond %{QUERY_STRING} !(?:^|&)test=yes(?:&|$) [NC]
RewriteRule ^foo/(.*)$ bar/$1?test=yes [NC,QSA,L]
マニュアル によると、<Directory..
は.htaccess
では許可されていません。サーバー構成と仮想ホストでのみ使用できます。代わりにmod_rewrite
を使用する必要があります。
簡単な答え:.htaccessファイルを削除するだけで、error.logの問題は解消されます。
より長い答え:
今日の初めに、C:\ xampp\Apache\logs\error.logファイルで同じメッセージを受け取り始めました。エラーは突然始まり(何年も問題なくローカルホストを使用した後)、ローカルホストを起動しようとしたときに「500サーバーエラー」と一致しました。
.htcaccessファイル(今日初めて/ Sitesディレクトリに表示された)の内容は次のとおりです。
<Directory>
AllowOverride All
Order allow,deny
</Directory>
同様の.htcaccessの質問に関連して他の人が指摘しているように、ファイルは通常必要ありません。
したがって、.htcaccessファイルを削除するだけで、問題はすぐに解決しました。すぐにローカルホストが再び機能し始め、エラーはログから消えました!