微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.htaccess 跳过 mod_rewrite 并指向 ErrorDocument 404

如何解决.htaccess 跳过 mod_rewrite 并指向 ErrorDocument 404

我有以下 .htaccess,它在我的一些网站上运行良好。但是,我已将其上传到另一个网站(在同一主机上,不同域上),现在认为错误 404 页面显示正确。

示例网址:https://www.example.ca/resources-and-links/documents/

.htaccess 首先检查是否存在带有第一个子目录的实际 .PHP 文件,在示例 resources-and-links.PHP 中。如果确实存在,它将提供该页面并将其余的子目录分解为提供的查询字符串。

如果 resources-and-link.PHP 不存在,它会将它定向到 content.PHP 以根据数据库中的页面检查它,并在 url 与数据库中的其中之一匹配时提供它。如果不是,content.PHP 页面显示自定义错误 404 页面

这适用于上述网站 https://sub.example.com 的子域,该子域运行我构建的 cms 系统,但不是根域,如前所述;而是显示 ErrorDocument。同样,我在许多其他网站上都使用了相同的 .htaccess,没有出现任何问题。

我使用 PHP 来证明 mod_rewrite 可用,那么有什么原因使它在根域上不起作用?为什么它直接跳到 ErrorDocument 并提供 /404.PHP

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/([^/]*)
    RewriteCond %{DOCUMENT_ROOT}/%1.PHP -f
    RewriteRule ^([^/]*)(/([^/]*))?(/([^/]*))?(/([^/]*))?(/([^/]*)) /$1.PHP?ax=$3&do=$5&third=$7&fourth=$9 [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([a-zA-Z]*)/(.*)$ /content.PHP?url=$1/$2 [L]
    Options +FollowSymLinks
    ErrorDocument 404 /404.PHP
</IfModule>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。