代码之家  ›  专栏  ›  技术社区  ›  riwalk

.htaccess中的重写器不工作

  •  6
  • riwalk  · 技术社区  · 14 年前

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

    我正在尝试使用.htaccess文件使基本的URL重写工作正常。

    文件“ http://localhost/page.php?=home “不存在,而位置”“/does not exist/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 回复  |  直到 10 年前
        1
  •  20
  •   riwalk    14 年前

    为了其他人的利益,我找到了答案:

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

    AllowOverride None
    

    将此更改为:

    AllowOverride All
    
        2
  •  3
  •   Gumbo    14 年前

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

    RewriteRule ^doesnotexist/(.*)$ /page.php?p=$1
    
        3
  •  0
  •   Varun Bhatia    10 年前

    如果我在/library/webserver/documents中放置一个.htaccess并打开“localhost/”,测试它,这将按预期工作。它不适用于“~/网站”。我在Mac OS X Mavericks上尝试过。