Web 服务器未读取 .htaccess 文件

Posted

技术标签:

【中文标题】Web 服务器未读取 .htaccess 文件【英文标题】:Web server not reading .htaccess file 【发布时间】:2013-05-21 03:00:54 【问题描述】:

我安装了安装了 apache2 的 Ubuntu 12.10,但我的 .htaccess 文件无法正常工作。我将其设置为不能在链接中包含 .php 文件扩展名,因此它看起来像 www.website.com/login 而不是 /login.php,但它说找不到 URL“/login”在服务器上。我读过this page,上面写了一些关于“AllowOverride All”的内容,但我不知道那在哪里,或者如果我需要添加它,我会在哪里添加它。

编辑:我找到了this link 并找到了它所说的内容,但它说我访问的任何页面都有内部服务器错误。我已经改成

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

但它显示内部服务器错误

编辑#2:在错误日志中,它说

/var/www/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

编辑#3:在这里找到答案:.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

【问题讨论】:

您必须搜索一个名为httpd.conf 的文件。如果你提供一些代码也很好。 我不确定,但是apache2不是没有httpd.conf吗? 我有 Apache 2.2.22 并且有 httpd.conf,你试过搜索吗? 是的,我试过了,但没有任何结果 【参考方案1】: 确保您已在 .htaccess 中启用 mod_rewrite。

还要确保这些行位于 .htaccess 的顶部:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

即关闭MultiViews 选项。

有关类似问题和我的回答,另请参阅 this Q&A

【讨论】:

【参考方案2】:

您应该在您的 apache 配置中拥有或指定 Directory-block。你可以在这里找到AllowOverride 文档:http://httpd.apache.org/docs/2.2/mod/core.html#allowoverride

关于&lt;Directory&gt; 的文档在这里:http://httpd.apache.org/docs/2.2/mod/core.html#directory

简而言之:指定您希望在何处使用&lt;Directory /path/to/your/directory&gt; 覆盖设置,然后在该目录块中使用AllowOverride all

【讨论】:

所以我把它放在配置文件的底部:&lt;Directory /&gt; AllowOverride All &lt;/Directory&gt; 还是不行 它应该是文件系统上的路径。

以上是关于Web 服务器未读取 .htaccess 文件的主要内容,如果未能解决你的问题,请参考以下文章

Centos htaccess 没有被读取

.htaccess 文件未被读取

服务器无法读取htaccess文件

服务器无法读取 htaccess 文件,拒绝访问是安全的

服务器无法读取htaccess文件,拒绝访问是安全的

服务器没有读取htaccess文件并且重定向不起作用