.htaccess“此处不允许使用选项”

xcitsw88  于 2022-11-16  发布在  其他
关注(0)|答案(9)|浏览(171)

我在我的.htaccess里有这个:
选项+关注符号链接
我在apache error_log中看到以下错误:

.htaccess: Options not allowed here

下面是我的httpd.conf文件中的部分:

#htdocs symlinks here
<Directory /Users/you/code/my/folder>
    Options All
    AllowOverride All
</Directory>

<Directory />
    Options All
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

<Directory "/Applications/XAMPP/xamppfiles/htdocs">
    Options All 
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

所以我在所有地方都设置了Options All和AllowOverride All,但仍然不允许我设置选项。有人能理解吗?
谢谢,B先生

fykwrbwg

fykwrbwg1#

请注意,这是XAMPP特有的问题。XAMPP加载了位于XAMPP/etc/extra/中的一些附加配置文件,这些文件覆盖了httpd. conf。对我来说,有问题的文件是http-userdir.conf,它应用了~user请求的规则,并包含AllowOverride FileInfo AuthConfig Limit Indexes行,将该行更改为AllowOverride All确实解决了我的问题。
这只适用于从OS X上的/Sites/目录提供的文件。我不知道Windows版本是否使用UserDir,甚至是否有类似的规则。

3phpmpom

3phpmpom2#

在我的例子中,我最后将httpd-vhosts.conf文件中的AllowOverride AuthConfig FileInfo行更改为AllowOverride All,该文件位于apache\conf\extra文件夹中

nhaq1z21

nhaq1z213#

您必须允许在目录上下文中覆盖“选项”。无需:

vhost/directory config:
    AllowOverride All

但仅允许覆盖“选项”:

AllowOverride {Existing options to override} +Options
dxxyhpgq

dxxyhpgq4#

我猜你的apache配置中有一个全局AllowOverride设置不允许这样做。你能在httpd.conf中为AllowOverride设置grep吗?

9ceoxa92

9ceoxa925#

  • 我刚安装了最新版本的XAMPP,想和大家分享一下我是如何解决这个问题的。*

这是一个XAMPP特定设置(每个新的XAMPP安装都有)。截至目前最新的XAMPP-XAMPP 1.8.3在/xampp/apache/conf/extra/httpd-xampp.conf中有一个设置,导致出现“服务器错误”消息。
然后,您会在错误日志中看到以下错误:

.htaccess: Options not allowed here

打开/xampp/apache/conf/extra/httpd-xampp.conf文件并查找:

<Directory "/xampp/htdocs/xampp">
    <IfModule php5_module>
        <Files "status.php">
            php_admin_flag safe_mode off
        </Files>
    </IfModule>
    AllowOverride AuthConfig
</Directory>

和改变

AllowOverride AuthConfig

AllowOverride All

除非您在httpd.conf、extra confs或. htaccess中指定,否则更改后不需要身份验证或授权。
您可能还需要阅读Apache文档中的AllowOverride www.example.com选项http://httpd.apache.org/docs/current/en/mod/core.html#allowoverride,并选择更优化和更安全的设置,以便在使用.htaccess时不会导致服务器错误。
同时请记住,你可以找到一个更好的地方来重写上面的规则,这取决于你想要达到的结果。

bttbmeg0

bttbmeg06#

如果您有一个httpd-vhosts.conf文件,您可能希望在需要它的每个主机条目中放置特定于目录的AllowOverride All指令,而不是更改主httpd.conf文件中的全局AllowOverride设置,这样您就可以在服务器领域的其余部分上保留一个限制性设置。

ffscu2ro

ffscu2ro7#

在.htaccess文件的所有示例中将Options +FollowSymLinks更改为Options +SymLinksIfOwnerMatch,由于存在安全风险,许多服务器上已禁用以下符号链接。

uhry853o

uhry853o8#

在Debian 9上我编辑了文件/etc/apache 2/mods-available/userdir.conf
已禁用此行 * 允许覆盖FileInfo AuthConfig限制索引 *
添加了此行 * 允许覆盖全部 *
而且效果很好。
非常感谢所有贡献者

cgyqldqp

cgyqldqp9#

您的域名所在的服务器是否满足埃尔格的所有要求?特别是mod_rewrite是否可用?
重新检查您已完成的所有步骤。
如果mod_rewrite正在运行...您是否可以访问服务器上Apache的配置(http.conf)?如果可以,请添加以下行(调整路径):
允许全部覆盖

相关问题