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, httpd2.conf, 然后是一大堆/etc/apache2/conf.d/——为配置 Apache 预留的整个目录结构。您的分布可能会有所不同。

也许apachectl configtest会显示路径?(目前没有安装在我的机器上,所以我不能轻易测试。)

于 2012-06-29T22:56:33.903 回答
4

试试这个命令:

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

2>1漏斗,stderr以便stdout两者都可以通过管道传输到grep实用程序中。grep反过来将打印其中没有字符串“Permission denied”的任何行(-v否定/反转搜索字符串的匹配)

如果您不重定向stderrstdout,则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 回答