Apache .htaccess 设定 RewriteEngine On 后,网站出现 403 禁止的

用 Joomla 4 建置新网站,开启 SEO 及 URL Rewrite 后,网站就出现问题,一开始 Google 到自己的文章 -「的Joomla URL重写 404 无法显示网页“,主要是因为没把 httpd.conf 的 AllowOverride 设为 All 导致。但这次设完后,卻變成 403 禁止的,且是所有页面都进不去,不管该页网址有没有用到 rewrite,研究了几个小时,总算找到原因。

 

要使用 URL Rewrite,有下列设定值需设定:

1. 阿帕奇 – LoadModule rewrite_module
2. 阿帕奇 – 选项 FollowSymLinks
3. 阿帕奇 – 允许覆盖所有
4. .htaccess的 – 重写引擎开启

 

  而我的问题在于以上四个都已设定,卻出現 403 禁止的,其中 2. 跟 3. 我在 httpd.conf 及 httpd-ahssl.conf 皆试过。

 

  为了简化测试环境以厘清问题,我将 .htaccess 内容只留下 RewriteEngine On 这行字,并将档案放在 htdocs 根目录。另外制作一个 test.php 档,内容如下,单纯显示 php 环境资讯,此档同样放在 htdocs 根目录。

<?php
phpinfo();
?>

 

  当浏览 http://abc.com/test.php 时,同样出现 403 禁止的,而去查询 Apache 的 error.log 时,可以看到这样的错误:

选项 FollowSymLinks 和 SymLinksIfOwnerMatch 都关闭, 因此 RewriteRule 指令也被禁止,因为它具有类似的规避目录限制的能力 : Ç:/Web/Apache24/htdocs/test.php

 

  因此可以将问题的范围缩小到 FollowSymLinks 这个参数上。再三确认 httpd.conf 有正确设定 FollowSymLinks 后,我开始逐一检视与比对新旧网站的 httpd.conf 差异。后来注意到新网站除了在 SSL 的部份是引用 httpd-ahssl.conf (包括 conf/extra/httpd-ahssl.conf) 设定档外,FastCGI 的部份也是引用外部 httpd-fcgid.conf (包括 conf/extra/httpd-fcgid.conf) 设定档,也就是说我旧网站的设定都在 httpd.conf,但新网站是用到三个设定档(httpd.conf、httpd-ahssl.conf、httpd-fcgid.conf)。其中 httpd.conf 跟 httpd-ahssl.conf 我已经试过,所以问题的症结应该就在 httpd-fcgid.conf。

 

  打开 httpd-fcgid.conf,在 底下找到 Options,预设只有一个 ExecCGI 参数,在后面加上 FollowSymLinks 后,重启 Apache,问题总算解决。

 

【相关连结】

3 回应

  1. 匿名 说: |

    是 FortiGate 50E 6.2.10 最好的?

    https://it-help.tips/fortigate-firmware-download/

    帮助!

  2. 匿名 说: |

    是 FortiGate 50E 6.2.10 最好的?

    是.

    陈方安生 回复 |

发表评论

请注意:: 评论审核已启用,可能会耽误您的评论. 有没有必要重新提交您的评论.