我已经在我的Vista机器上安装了新的Apache 2.2,一切都很好,除了mod重写。

我已经激活

LoadModule rewrite_module modules/mod_rewrite.s

但我的重写规则都没用,即使是像这样简单的

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

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


当前回答

在Ubuntu中:

Run:

a2enmod rewrite

然后:

service apache2 restart

Mod_rewrite现在将被启用!

其他回答

<编辑>

刚刚注意到你说了mod_rewrite。S代替mod_rewrite。所以-希望这是您的问题中的拼写错误,而不是httpd.conf文件中的拼写错误!:)

< /编辑>

我更习惯于在Linux上使用Apache,但有一天我不得不这样做。

首先,查看一下Apache安装目录。(我假设你安装到“C:\Program Files”这里)

查看一下文件夹:“C:\Program Files\Apache Software Foundation\Apache2.2\modules”,并确保有一个名为mod_rewrite的文件。在这里。(应该是,它是作为默认安装的一部分提供的。

接下来,打开“C:\Program Files\Apache Software Foundation\Apache2.2\conf”,然后打开httpd.conf。确保台词:

#LoadModule rewrite_module modules/mod_rewrite.so

注释:

LoadModule rewrite_module modules/mod_rewrite.so

此外,如果您希望在默认情况下启用RewriteEngine,则可能需要添加如下内容

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

到httpd.conf文件的末尾。

如果不是,请确保指定

RewriteEngine On

在你的。htaccess文件中。

如果没有以上工作尝试编辑/etc/apache2/sites-enabled/000-default

几乎在顶部你会发现

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

将AllowOverride None更改为AllowOverride All

这对我很有效

旧线程中,不要设置AllowOverride为all而是使用你想使用的特定mod,

AllowOverride mod_rewrite mod_mime

这一行应该取消注释

LoadModule rewrite_module modules/mod_rewrite.so

参考资料

http://www.eschrade.com/page/why-you-should-not-use-htaccess-allowoverride-all-in-production/ https://httpd.apache.org/docs/2.4/misc/security_tips.html https://httpd.apache.org/docs/2.4/rewrite/avoid.html

对我有用的(在ubuntu中):

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

另外,正如前面提到的,确保在/etc/apache2/sites-available/default的相关部分设置AllowOverride all

打开终端,输入a2enmod rewrite,它将为Apache启用mod_rewrite模块。

然后进入/etc/apache2/sites-available并编辑默认文件。(为此,您必须对该文件和站点可用文件夹具有可写权限。)

用现有的第4至14行替换下面的内容

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

现在通过/etc/init.重新启动apacheD /apache2 restart或service apache2 restart

再次进行干净的URL测试,这一次它将通过。