小编典典

如何为 Apache 2.2 启用 mod_rewrite

all

我在我的 Vista 机器上安装了全新的 Apache 2.2,一切正常,除了 mod rewrite。

我已取消注释

LoadModule rewrite_module modules/mod_rewrite.s

但我的重写规则都不起作用,即使是简单的规则

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

我使用的所有规则都在我的主机上工作,所以它们应该没问题,所以我的问题是,apache 配置中是否有任何隐藏的东西可以阻止 mod 重写?


阅读 90

收藏
2022-03-11

共1个答案

小编典典

为了使用mod_rewrite,您可以在终端中键入以下命令:

sudo a2enmod rewrite

之后重启apache2

sudo /etc/init.d/apache2 restart

要么

sudo service apache2 restart

或按照新的统一系统控制方式

sudo systemctl restart apache2

然后,如果您愿意,可以使用以下.htaccess文件。

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

上述.htaccess文件(如果放置在您的 中DocumentRoot)会将所有流量重定向到
中的index.php文件,DocumentRoot除非该文件存在。

因此,假设您有以下目录结构,而 httpdocs 是DocumentRoot

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

httpdocs
中存在的任何文件都将使用.htaccess上面显示的方式提供给请求者,但是,其他所有文件都将被重定向到httpdocs/index.php.
您的应用程序文件includes/app将无法访问。

2022-03-11