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>

我收到以下错误日志:

[星期二9月19日17:23:58.356362 2017] [核心:警报] [PID 6336:TID 1900] [客户:: 1:60018] c:/xampp/htdocs/parent/.htaccess:&lt;目录允许在这里

我检查了我的httpd.conf文件,一切都还好。我敢肯定,因为如果将.htaccess文件的内容更改为:

Options -Indexes

它正确显示了403个错误。如果我用+替换-,则显示目录列表。

我在做什么错?

<Directory>在.htaccess中不允许使用指令,并且为了满足您的要求,您甚至不需要它。

您可以在网站root(parent).htaccess中使用此规则:

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

<Directory...htaccess中不允许根据手册。您只能在服务器配置和虚拟主机中拥有它。您应该改用mod_rewrite

简短答案:只需删除.htaccess文件,而您的错误问题将消失。

更长的答案:

我开始在我的C: xampp apache logs error.log文件中获取相同的消息。该错误突然开始(在使用Localhost而无需挂接的多年之后),并在我尝试启动Localhost时与" 500服务器错误"一致。

.htcaccess文件的内容(今天首次出现在我/站点目录中)是:

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

正如其他人所指出的有关类似的.htcaccess问题所指出的,该文件通常不是必需的。

i因此,简单地删除了.htcaccess文件,该文件立即解决了问题。立即Local Host再次开始工作,并且错误从日志中消失了!

最新更新