我的htdocs文件夹中的.htaccess文件不起作用。我在访问文件名时尝试重定向到Google。我想知道我的httpd.conf的设置在哪里,所以我可以启用mod_rewrite。我做了以下UNIX命令,以查明我的硬盘驱动器上是否存在httpd.conf文件:
find * -name "httpd.conf"
该文件不存在。我想也许还有另一个控制mod_rewrite的文件。我想看看任何目录中是否存在“AllowOverride”。我输入了以下UNIX命令:
grep -r "AllowOverride" *
但它很难阅读,因为它打印出如此多的文件夹。文件夹附带的消息是“权限被拒绝”或“没有这样的文件或目录”。如何只获取包含AllowOverride的文件的文件路径?
答案 0 :(得分:5)
许多Unix和类似系统提供locate(1)
命令,该命令使用数据库来加速查找单个文件。试试这个:
locate httpd.conf
当然,请注意,Apache配置存储在各种名称的文件中;我见过apache.conf
,httpd.conf
,httpd2.conf
,然后是/etc/apache2/conf.d/
的巨大堆 - 整个目录结构用于配置Apache。您的分发可能会有所不同。
也许apachectl configtest
会显示路径? (目前我的机器上没有安装,所以我不能轻易测试。)
答案 1 :(得分:4)
尝试此命令:
find / -name "httpd.conf" 2>1 | grep -v "Permission denied"
2>1
个渠道stderr
到stdout
,以便两者都可以通过管道输入grep实用程序。 grep
反过来将打印任何没有字符串“Permission denied”的行(-v
否定/反转搜索字符串的匹配)
如果您不将stderr
重定向到stdout
,则stderr
到控制台的输出将绕过命令行的其余部分。
你可以通过追加来扩展上述命令行:
| grep -v "No such file or directory"
如果那个字符串出现了,你也想要抑制它。
这告诉你all about io redirection。这是一个很好的quick summary。
答案 2 :(得分: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
输出应仅打印包含指定字符串的文件以及匹配行的编号