1

htdocsフォルダにある.htaccessファイルが機能しません。ファイル名にアクセスするときにGoogleにリダイレクトしようとしました。httpd.confの設定がどこにあるかを知りたいので、mod_rewriteを有効にできます。次のUNIXコマンドを実行して、ハードドライブにhttpd.confファイルが存在するかどうかを確認しました。

find * -name "httpd.conf"

ファイルが存在しません。mod_rewriteを制御する別のファイルがあるのではないかと思います。「AllowOverride」がディレクトリに存在するかどうかを確認したい。次のUNIXコマンドを入力しました。

grep -r "AllowOverride" *

しかし、非常に多くのフォルダを印刷するため、読みにくいです。フォルダに付随するメッセージは、「アクセスが拒否されました」または「そのようなファイルまたはディレクトリはありません」です。AllowOverrideを含むファイルのファイルパスのみを取得するにはどうすればよいですか?

4

3 に答える 3

5

多くのUnixおよび同様のシステムlocate(1)は、データベースを使用して個々のファイルの検索を高速化するコマンドを提供します。これを試して:

locate httpd.conf

もちろん、Apache構成はあらゆる種類の名前のファイルに保存されていることに注意してください。apache.conf、、、を見てきたのですがhttpd.conf、Apacheを構成するために取っておかれたディレクトリ構造全体httpd2.confの巨大な山があります。/etc/apache2/conf.d/配布は異なる場合があります。

おそらくapachectl configtestパスが表示されますか?(現在、私のマシンにはインストールされていないため、簡単にテストすることはできません。)

于 2012-06-29T22:56:33.903 に答える
4

次のコマンドを試してください。

 find / -name "httpd.conf" 2>1 | grep -v "Permission denied"

2>1両方をgrepユーティリティにパイプできるようにstderrするための目標到達プロセス。次に、「Permissiondenied」という文字列が含まれていない行を出力します(検索文字列の一致を否定/反転します)stdoutgrep-v

stderrにリダイレクトしない場合、コンソールへstdoutの出力はstderr残りのコマンドラインをバイパスします。

これを追加することで、上記のコマンドラインを拡張できます。

| grep -v "No such file or directory" 

その文字列が表示されていて、それも抑制したい場合。

これにより、ioリダイレクトについてすべて説明します。そして、ここに素晴らしい簡単な要約があります。

于 2012-06-29T22:52:15.943 に答える
0

以下を使用してください。

  find / -type f -exec grep -n "AllowOverride" {} \; -print 2>/dev/null

ルートから「AllowOverride」文字列を含むファイルをスキャンするには、特定のディレクトリで検索を実行する場合は、代わりに次を使用します。

  find /path/to/directory -type f -exec grep -n "AllowOverride" {} \; -print 2>/dev/null

出力は、指定された文字列と一致する行の番号を含むファイルのみを出力する必要があります

于 2012-06-29T23:09:20.743 に答える