.htaccess中的RewriteRule不起作用

时间:2010-02-03 17:55:11

标签: apache .htaccess mod-rewrite

我目前在本地计算机上运行Apache2,并安装了最新版本的Ubuntu。

我正在尝试使用.htaccess文件进行基本的URL重写。

文件“http://localhost/page.php?=home”确实存在,位置“/ doesnotexist / home”不存在。

我希望在请求第二页时加载第一页。

我的.htaccess文件如下所示:

RewriteEngine On
RewriteRule ^/doesnotexist/(.*)$ /page.php?p=$1 

我的httpd.conf文件如下所示:

LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so

<Directory /var/www>
    AllowOverride All
</Directory>

请注意,我的httpd.conf文件看起来像完全,因为它在我编辑之前是空的。

我得到的结果是:

Not Found

The requested URL /doesnotexist/home was not found on this server.

我已经搜索过这个问题的生活****,除了上面的错误,我从来没有得到任何其他东西。

如果有人有任何想法,我会非常感激。

3 个答案:

答案 0 :(得分:21)

为了别人的利益,我想出了答案:

在文件“/ etc / apache2 / sites-enabled / 000-default”中有一行:

AllowOverride None

将其更改为:

AllowOverride All

答案 1 :(得分:3)

在.htaccess文件中使用mod_rewrite时,需要从模式中删除上下文路径前缀。对于根目录,路径前缀仅为/。所以试试这个:

RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1

答案 2 :(得分:0)

如果我将.htaccess放入/ Library / WebServer / Documents并打开&#34; localhost /&#34 ;;测试它,这按预期工作。它只是在&#34;〜/ Sites&#34;中工作。我在Mac OS X Mavericks上试过这个。