如何解决.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 举报,一经查实,本站将立刻删除。