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
关于<Directory>
的文档在这里:http://httpd.apache.org/docs/2.2/mod/core.html#directory
简而言之:指定您希望在何处使用<Directory /path/to/your/directory>
覆盖设置,然后在该目录块中使用AllowOverride all
。
【讨论】:
所以我把它放在配置文件的底部:<Directory /> AllowOverride All </Directory>
还是不行
它应该是文件系统上的路径。以上是关于Web 服务器未读取 .htaccess 文件的主要内容,如果未能解决你的问题,请参考以下文章