mod_rewrite不起作用

时间:2010-09-19 18:24:57

标签: mod-rewrite debian

我是服务器管理的新手,但我能够在我的新VPS上运行LAMP设置。我上传了一些可以在我的其他服务器上运行的Web文件,但它们似乎在我的/var/log/apache2/error.log文件中给出了错误:“文件不存在”。主页通过我的脚本加载很好,但其他页面没有。

.htaccess文件代码

    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?r=$1 [L,QSA]

我在服务器上启用了mod_rewrite,可以看到它在我创建的phpinfo()页面下运行。根本不知道为什么会出现这个问题。如果我需要发布任何其他内容,请告诉我:)

3 个答案:

答案 0 :(得分:42)

您的网站或虚拟主机似乎未获得处理.htaccess文件的相应权限。您可以通过故意出现语法错误来轻松测试:如果您的站点没有崩溃,则会忽略该文件。

在主httpd.conf文件中尝试以下内容:

<Directory "/path/to/your/site">
    AllowOverride All
</Directory>

......或者这(根据自己的喜好):

<VirtualHost *:80>
    AllowOverride All
</VirtualHost>

答案 1 :(得分:10)

当我遇到此问题时,/etc/apache2/sites-enabled/000-default得到了AllowOverride All,但/etc/apache2/apache2.conf的网络DirectoryAllowOverwrite None的条目相同}}。所以一定要检查两个地方!

答案 2 :(得分:0)

错误:模块重写不存在 2014年2月21日,作者Sharad Chhetri发表评论

在Ubuntu中使用Apache Module时,我在Apache Web Server中发现了重写问题。我尝试启用重写模块,但出现此错误ERROR:模块重写不存在!。在进行故障排除之后,我发现问题出在mod_rewrite模块。

进行更多的故障排除后,发现/ etc / apache2 / mods-available /中缺少rewrite.load文件。

现在,我检查了mod_rewrite.so实际的模块文件,哇,它在那里。

下面给出的是我运行的分步命令来解决此问题。这是我系统中的参考

root @ tuxworld:〜#a2enmod重写

错误:模块重写不存在!

root @ tuxworld:〜#ls -l /usr/lib/apache2/modules/mod_rewrite.so

-rw-r--r-- 1个根root 58728 2020年5月28日/usr/lib/apache2/modules/mod_rewrite.so

root @ tuxworld:〜#

root @ tuxworld:〜#echo“ LoadModule rewrite_module

/usr/lib/apache2/modules/mod_rewrite.so“> /etc/apache2/mods-available/rewrite.load

root @ tuxworld:〜#

root @ tuxworld:〜#a2enmod rewrite启用模块重写。

要激活新配置,您需要运行:

服务apache2重新启动

root @ tuxworld:〜#

此后,我重新启动了apache2服务

sudo服务apache2重新启动