CentOS Apache .htaccess:此处不允许选项(500 - 内部服务器错误)

Posted

技术标签:

【中文标题】CentOS Apache .htaccess:此处不允许选项(500 - 内部服务器错误)【英文标题】:CentOS Apache .htaccess: Options not allowed here (500 - Internal Server Error) 【发布时间】:2016-04-05 17:27:21 【问题描述】:

我在 CentOS 7 中安装 Apache,这是我的 httpd.conf - http://pastebin.com/raw/YeiLn7GN

这是我的文档根目录:/home/host/public_html

为了测试.htaccess 文件是否有效以及mod_rewrite 是否启用,我已将示例.htaccess 从一个laravel 项目上传到/home/host/public_html/.htaccess,其内容如下:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ index.php [L]
</IfModule>

然后我上传了以下 php 脚本:/home/host/public_html/index.php

<?php echo '<pre>'; print_r($_SERVER); ?>

当我访问http://&lt;my-server-ip&gt;/index.php 时,我收到以下错误:

500 内部服务器错误

我在/var/log/httpd/apache_error_log 文件中找到了以下内容:

[Thu Dec 31 15:50:43.696465 2015] [core:alert] [pid 23807] [client xxx.xxx.xxx.xxx:56536] /home/host/public_html/.htaccess: 此处不允许选项

如果我从 .htaccess 文件中删除以下行:

<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

脚本似乎正在加载并且没有 500 错误。

有什么想法可能是错的吗?

【问题讨论】:

【参考方案1】:

.htaccess: Options not allowed here 错误表示不允许 htaccess 文件使用 Options 指令更改设置。

要修复此错误,请编辑您的 apache 配置文件 /etc/httpd/conf/httpd.conf:-

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride Options
    Order allow,deny
    allow from all
</Directory>

将“Options”添加到 AllowOverride 列表中,将允许在 htaccess 文件中使用 Options 指令

【讨论】:

以上是关于CentOS Apache .htaccess:此处不允许选项(500 - 内部服务器错误)的主要内容,如果未能解决你的问题,请参考以下文章

apache重写

apache_conf 加速WordPress自托管站点。此内容在#BEGIN WordPress之前进入.htaccess文件。

技术干货 | Apache的.htaccess利用技巧

将Apache的.htaccess转换到nginx中

禁用 httpd.conf 中的目录浏览与 apache 上的 .htaccess

apache的重写规则