如何为 xampp 启用 mod_rewrite?

如何为 xampp 启用 mod_rewrite?

我在 htaccess 文件中执行 mod 重写时,访问 localhost,出现 404 未找到错误

我怎样才能让它工作,我找到的所有参考资料都指向我编辑 /etc/apache2/mods-enabled 中的文件

对于我来说,没有 /etc/apache2 文件夹,那么 apache 安装在哪里?

使用 xampp,http://www.apachefriends.org/en/xampp-linux.html

答案1

您在标题中询问了有关 xampp 的问题,但在描述中描述了 apache2 问题。 这两种方法都是运行 apache web 服务器的不同方法。

xampp配置与apache2不同。xampp包含apache和mysql,如果您已经安装了xampp,则无需单独安装它们。

xampp 无法识别 a2enmod 或 a2dismod,即使您已在 ubuntu 中安装了 xampp。它们(a2enmod 或 a2dismod)已针对 apache2 进行了配置。

xampp 的配置与 centOS 或 fedora 的 httpd 非常相似。

XAMPP 安装为 /opt/lampp。XAMPP 默认启用重写模块。您可以在文件 /opt/lampp/etc/httpd.conf 中检查。应该有一行

LoadModule rewrite_module modules/mod_rewrite.so

文件 httpd.conf 中以及 mod_rewrite.so 文件中的模块可用。如果行被注释,则表示模块被禁用。如果您想在 xampp 中使用重写规则,则应取消注释该行,并且 .so 文件不应损坏。

答案2

在httpd.conf中设置完本节后不要忘记:

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

你应该启用 mod_rewrite:

sudo a2enmod rewrite

然后重新启动 apache:

sudo service apache2 restart

为了确保这一点,你可以从 phpinfo 中检查Configuration> apache2handler>中Loaded Modules必须写有mod_rewrite,这意味着mod_rewrite已启用。希望这能有所帮助。

答案3

我不确定 XAMPP 是否真的Ubuntu Apache 软件包使用的 sites-available/sites-enabled、mods-available/mods-enabled 结构。但如果这些目录在那里,我希望它们位于 /opt/lampp/etc 的某个位置,因为主配置文件 httpd.conf 在那里(根据http://www.apachefriends.org/en/xampp-linux.html#385)。

根据 XAMPP 上的一些(相当过时的)博客文章,该 httpd.conf 中可能有一个合适的 LoadModule 指令,其效果如下

#LoadModule rewrite_module path/to/mod_rewrite.so

如果该设置仍处于最新状态,则需要从该行中删除注释符号 (#)。此外,您需要启用对中央设置的本地覆盖(例如从 htaccess 文件或 vhost)。因此,您需要查找

AllowOverride None

并将其更改为

AllowOverride All

这可能会在 httpd.conf 中多次出现,您需要调整每次出现的情况。下次重新启动 Apache 后,mod_rewrite 应该可以正常工作。

归根结底,mod-available/mod-enabled 系统“仅仅”是一种管理配置片段(如上面的 LoadModule)的便捷方式,例如请参阅 Ubuntu Apache 包中的 /etc/apache2/mods-available/rewrite.load。

相关内容