【问题标题】:Apache .htaccess <Directory not allowed hereApache .htaccess <此处不允许目录
【发布时间】:2018-02-28 09:41:51
【问题描述】:

我运行 XAMPP,并试图了解 .htaccess 的工作原理。我有一个看起来像这样的文件结构:

/parent
    /foo
    /bar
    .htaccess

我只想将所有foo 请求更改为bar,并在它们后面附加一个GET 参数。例如:

foo/
foo/hello.php

变成:

bar/?test=yes
bar/hello.php?test=yes

当我尝试将 &lt;Directory&gt; 指令放入我的 .htaccess 文件中时:

<Directory "/foo">
    Options +Indexes
</Directory>

我收到以下错误日志:

[2017 年 9 月 19 日星期二 17:23:58.356362] [core:alert] [pid 6336:tid 1900] [client ::1:60018] C:/xampp/htdocs/parent/.htaccess:

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

Options -Indexes

它正确显示 403 错误。如果我将- 替换为+,它会显示目录列表。

我做错了什么?

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite apache-config


    【解决方案1】:

    &lt;Directory&gt; 指令在 .htaccess 中是不允许的,为了满足您的要求,您甚至不需要在 .htaccess 中使用它。

    您可以在站点根(父).htaccess 中使用此规则:

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

    【讨论】:

    • 我了解RewriteRule 的作用以及其中的模式匹配,但您能解释一下RewriteCond 的作用吗?我不明白它检查了什么。
    • RewriteCond 在开头使用否定运算符!,这意味着仅当QUERY_STRING 还没有test=yes 查询参数时才执行此规则。查询参数可能位于开头、中间或结尾。这就是为什么我将(?:^|&amp;) 用于开始/中间位置,将(?:&amp;|$) 用于中间/结束位置。
    【解决方案2】:

    根据the manual.htaccess 中不允许使用&lt;Directory..。您只能在服务器配置和虚拟主机中拥有它。你应该改用mod_rewrite

    【讨论】:

    • 你能举个例子吗?我将如何实现它来解决我的问题? manual 给出了 &lt;Directory&gt; 的例子。也许在我的问题中显示一个示例解决方案?
    【解决方案3】:

    简短回答:只需删除 .htaccess 文件,您的 error.log 问题就会消失。

    更长的答案:

    我今天早些时候开始在我的 C:\xampp\apache\logs\error.log 文件中收到相同的消息。该错误突然开始(在多年使用 localhost 后没有出现故障),并且在我尝试启动 localhost 时出现“500 服务器错误”。

    .htcaccess 文件(今天第一次出现在我的 /Sites 目录中)的内容是:

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

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

    因此,我简单地删除了 .htcaccess 文件,这立即解决了问题。 localhost 立即重新开始工作,错误从日志中消失了!

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 1970-01-01
      • 2011-10-29
      • 2023-03-04
      • 2014-05-28
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多