根域和子文件夹中的两个 htaccess 中的 404 问题

Posted

技术标签:

【中文标题】根域和子文件夹中的两个 htaccess 中的 404 问题【英文标题】:404 issue in two htaccess in root domain and subfoler 【发布时间】:2019-03-16 12:29:53 【问题描述】: 我的根域 htaccess: 选项 +FollowSymLinks 重写引擎开启 RewriteBase / 错误文档 404 /404.php RewriteCond %`HTTP_HOST` ^www\.(.*)$ [NC] 重写规则 ^(.*)$ `https://%1/$1` [R=301,L] RewriteCond %HTTPS !on 重写规则 (.*) `https://%HTTP_HOST%REQUEST_URI` [R=301,L] 在我的子文件夹 htaccess 中: 重写引擎开启 RewriteBase / RewriteCond %HTTP_HOST `^(www\.example\.com)?$` RewriteRule ^(.*)$ `https://example.com/subfolder/$1` [R=301,L]

我输入example.com/any-wrong-url,会跳转到404页面,没错。

但是当我输入example.com/subfoler/any-wrong-url 时,它无法重定向到 404 页面。我哪里有问题?

【问题讨论】:

【参考方案1】:

在不产生任何冲突或重定向的情况下执行此操作的最佳方法是:

在 RewriteBase 上使用 /subfolder/ 而不是 root /,如下所示:

RewriteBase /subfolder/

404.php复制到subfolder中。

完整的代码如下所示:

RewriteEngine On
RewriteBase /subfolder/
ErrorDocument 404 /404.php
RewriteCond %HTTP_HOST `^(www\.example\.com)?$`
RewriteRule ^(.*)$ `https://example.com/subfolder/$1` [R=301,L]

这应该可行。

【讨论】:

以上是关于根域和子文件夹中的两个 htaccess 中的 404 问题的主要内容,如果未能解决你的问题,请参考以下文章

在根域和一个特定的子域上设置会话 cookie

如何设置DNS,让一个gitlab页面的根域和子域指向同一个地址?

如何在每个都有自己的 GTM 和 GA 容器的根域和子域之间设置跨域跟踪

.NET:从域和子文件夹重定向到新域,保留路径和查询字符串,在 web.config 中使用 httpredirect

根域上的WordPress站点工作但子文件夹中的codeigniter不起作用

同一域树下的提权利用方式(Golden Ticket+SID History)