Apache 2.4 中的 mod_rewrite 使用

Apache 2.4 中的 mod_rewrite 使用

好的,关于如何使用 mod_rewrite 的讨论已经很多了,但我发现它在 Apache 2.4 中似乎有点不同。我尝试了以下方法:

<Directory /var/www/vhosts/example.com>
<IfModule mod_rewrite>
RewriteEngine On
RewriteBase /var/www/vhosts/example.com
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>
</Directory>

这是位于的/etc/apache2/conf-available/httpd.conf/,我已经sudo a2enconf httpd.conf运行并启用了它,但它无论如何都不想工作。

我尝试过不Directory使用位,也尝试过按照 wordpress 的建议调用它mod_rewrite.c,但以上两种方法似乎都不起作用。我还尝试过使用标签Directory但不使用IfModule,出于显而易见的原因,Apache 最终无法启动。是的,我每次尝试之间都会重新启动 Apache。

Apache 2.4 中是否有我不知道的新技巧?如能提供任何帮助,不胜感激。

答案1

已启用 mod_rewrite通过这个命令:

sudo a2enmod rewrite

制作文件给你httpd 配置/etc/apache2/站点可用/所以在我的 Ubuntu 中我制作的文件是/etc/apache2/sites-available/code-machine.conf

DocumentRoot /var/www
<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

编辑:正如 Chris Gregory 和 firepol 提醒的那样,你可以登记新的配置文件代码机器.conf

sudo a2ensite code-machine.conf

然后重启你的 Apache

sudo service apache2 restart

答案2

甚至我在 14.04 上的 Apache 2.4 中也遇到了类似的问题

请注意,配置文件现在位于/etc/apache2/apache2.conf

我尝试了这个并且它对我有用。

sudo nano /etc/apache2/apache2.conf

找到根目录所在的指令目录并设置以下内容:

Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All

答案3

我有登记新的 conf 文件必须与 Apache 配合使用,它才能工作。

sudo a2ensite MyConfiguration.conf

然后我就可以跑了

sudo service apache2 restart

相关内容