![如何为 xampp 启用 mod_rewrite?](https://linux22.com/image/963046/%E5%A6%82%E4%BD%95%E4%B8%BA%20xampp%20%E5%90%AF%E7%94%A8%20mod_rewrite%EF%BC%9F.png)
我在 htaccess 文件中执行 mod 重写时,访问 localhost,出现 404 未找到错误
我怎样才能让它工作,我找到的所有参考资料都指向我编辑 /etc/apache2/mods-enabled 中的文件
对于我来说,没有 /etc/apache2 文件夹,那么 apache 安装在哪里?
答案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。