【问题标题】:Can't get mod_rewrite to work with Joomla无法让 mod_rewrite 与 Joomla 一起使用
【发布时间】:2017-09-01 14:22:49
【问题描述】:

我在虚拟主机中使用 apache 在 Ubuntu 服务器上运行 Joomla 网站,但无法让 URL 重写工作(想从 URL 中删除 index.php)。

在服务器上启用了 Mod_rewrite,在另一个非 Joomla 虚拟主机上进行了测试和工作。除了不同的路径/域和 Joomla VH 上的 SSL 证书之外,这两个虚拟主机设置是相同的。我似乎在证书中找不到任何会导致这些问题的东西,但我可能错了。对此有什么想法吗?

我已经使用 Joomla 的 URL 重写设置(在全局配置中)和默认的 Joomla .htaccess 以及 htaccess(rewritebase,注释掉其他重写等)测试了重写模块的功能。还尝试使用空的 .htaccess 仅添加Joomla! Documentation 提供的标准重写规则:

RewriteEngine On<br/>
Options +FollowSymLinks<br />
RewriteRule ^joomla\.html http://www.joomla.org/? [R=301,L]

这也不行。

有没有人知道可能出了什么问题或者我可以如何进一步解决这个问题?

Ubuntu 版本:16.04.1
Apache 版本:2.4.18
PHP 版本:7.0.22
Joomla 版本:3.7.5

【问题讨论】:

  • 对于故障排除,请分别尝试这些可能性。 1. 验证 Joomla 全局配置显示 SEF 并在 configuration.php 中启用重写。 2. 注释掉#Options +FollowSymLinks,3) 使用重定向检查器网站查看是否检测到任何可疑内容
  • 已经尝试过您提供的选项,但您的评论让我再试一次,解决方案 2 修复了它。谢谢!

标签: apache mod-rewrite joomla


【解决方案1】:

如果您想在带有 Apache 2+ 的 Ubuntu 服务器上的 Joomla 中使用 SEF URL,需要执行四个步骤。也许其中一些已经完成,但我想把它们都放在这里。

我假设你对你的服务器有 sudo 访问权限, 否则,您的托管服务提供商必须执行前两个步骤。

  1. 在 Apache 上启用 mod_rewrite sudo a2enmod rewrite &amp;&amp; sudo systemctl restart apache2

  2. 允许重写您的虚拟主机

    <Directory "/var/www/path/to/public">
        AllowOverride All
    </Directory>
    

    如果缺少此步骤,您的 .htaccess 文件中的任何内容都将不起作用。如果您已经有一个 Directory-Directive 只需添加 AllowOverride All 您可能希望稍后限制它,但仅用于测试 ALL 会很好。

  3. 将 Joomla 的 htaccess.txt 重命名为 .htaccess。 通常您不必更改此文件,只需使用原始文件并重命名即可。

  4. 在 Joomla! 中启用 SEF! 以 Joomla 超级用户身份登录并转到 Joomla System Konfiguraton,例如http://www.example.com/administrator/index.php?option=com_config。 在右侧,您必须启用前两个选项(SEF URL 和 URL-Rewite)

现在你应该有没有 index.php 的 SEF URL

【讨论】:

  • 谢谢,第二步是我的解决方案。
猜你喜欢
  • 2014-10-31
  • 2018-01-02
  • 2016-11-14
  • 2015-02-01
  • 2019-05-10
  • 2017-11-20
  • 2011-05-24
  • 2019-05-17
  • 2018-06-02
相关资源
最近更新 更多