我目前在本地计算机上运行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.
我已经搜索过这个问题的生活****,除了上面的错误,我从来没有得到任何其他东西。
如果有人有任何想法,我会非常感激。
答案 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上试过这个。