好的,关于如何使用 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