我运行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再次开始工作,并且错误从日志中消失了!